//-*- mode: c++ -*-
//  $Id: BrVertex.h,v 1.4 2002/08/30 16:11:02 hagel Exp $
//  $Author: hagel $
//  $Date: 2002/08/30 16:11:02 $

#ifndef BRAT_BrVertex
#define BRAT_BrVertex
///////////////////////////////////////////////////////////////////////
//                                                                   //
//    BrVertex                                                       //
//                                                                   //
//    BRAHMS Vertexing Data Class                                    //
//    Filled by FillDataObject in vertex-class                       //
//    Author  : bjornhs                                              //
//    Created : 28/feb/00                                            //
//    Version : 1.0                                                  //
//    Changed :                                                      //
//                                                                   //
///////////////////////////////////////////////////////////////////////

//Brat Classes
#ifndef BRAT_BrDataObject
#include "BrDataObject.h"
#endif

class BrVertex : public BrDataObject {

public:

  BrVertex();
  BrVertex(const Char_t* Name, const Char_t* Title = NULL);
  BrVertex(BrVertex &vertex);
  virtual ~BrVertex();

  void Clear(Option_t* option="");
  
  Float_t  GetX() const {return fVertex_x;} // Gives vertex x-coord (cm)
  Float_t  GetY() const {return fVertex_y;} // Gives vertex y-coord (cm)
  Float_t  GetZ() const {return fVertex_z;} // Gives vertex z-coord (cm)
  Int_t    GetVertex_found() const {return Vertex_found;} // Gives 1 if vertex was successfully determined, otherwise 0
  Int_t    VertexFound() const {return Vertex_found;} // Better syntax
  Float_t  GetVertexYSigma() const {return fVertex_sigma_y;} // Returns the sigma of the determining histogram
  Float_t  GetVertexZSigma() const {return fVertex_sigma_z;} // Returns the sigma of the determining histogram
  Float_t  GetVarianceY() const {return fVarianceY;}
  Float_t  GetVarianceZ() const {return fVarianceZ;}
  Float_t  GetVertexChisq() const {return fVertex_chisq;}
  Int_t    GetVertexMethodUsed() const {return Vertex_method_used;}

  void SetX(const Float_t value) {fVertex_x = value;}
  void SetY(const Float_t value) {fVertex_y = value;}
  void SetZ(const Float_t value) {fVertex_z = value;}
  void SetVertexYSigma(const Float_t sigma) {fVertex_sigma_y = sigma;}
  void SetVertexZSigma(const Float_t sigma) {fVertex_sigma_z = sigma;}
  void SetVertexVarianceY(const Float_t var) {fVarianceY = var;}
  void SetVertexVarianceZ(const Float_t var) {fVarianceZ = var;}
  void SetVertexChisq(const Float_t chisq) {fVertex_chisq = chisq;}
  void SetVertexFound(const Int_t vf) {Vertex_found = vf;}
  void SetVertexMethodUsed(const Int_t mu) {Vertex_method_used = mu;}

  void Print(Option_t* option="") const;  //*MENU*
private:

  Float_t   fVertex_x;            //  Vertex x(cm)
  Float_t   fVertex_y;            //  Vertex y(cm)
  Float_t   fVertex_z;            //  Vertex z(cm)
  Int_t     Vertex_found;         // Set to 1 when vertex is determined
  Int_t     Vertex_method_used;   // Which vertexing-method was used
                                  // 0 = none
                                  // 1 = BrTPMClusterVertexModule
                                  // 2 = BrTPMTrackVertexModule
                                  // 3 = BB
                                  // 4 = ZDC
                                  // 5 = Track projection (mainly TPM1 for pp)

  Float_t   fVertex_chisq;        // Chisqared, from BrTPMTrackVertexModule
  Float_t   fVertex_sigma_y;      // Sigma of det. hist. in
  Float_t   fVertex_sigma_z;      // BrTPMClusterVertexModule
  Float_t   fVarianceY;           // Error in z = sqrt(fVarianceZ)
  Float_t   fVarianceZ;           // Error in z = sqrt(fVarianceZ)

public:
      
    ClassDef(BrVertex,1) 
};

#endif

//  $Log: BrVertex.h,v $
//  Revision 1.4  2002/08/30 16:11:02  hagel
//  Add comment to Vertex_method_used for track projection
//
//  Revision 1.3  2001/08/07 12:42:00  cholm
//  Added standard Print method
//
//  Revision 1.2  2001/06/25 14:41:24  cholm
//  Made Print conform to TObject
//
//  Revision 1.1.1.1  2001/06/21 14:55:04  hagel
//  Initial revision of brat2
//
//  Revision 1.9  2001/04/20 23:09:06  hagel
//  Added copy constructor
//
//  Revision 1.8  2000/12/19 19:39:16  hagel
//  Implemented Clear method (to make using with tree's more convenient)
//
//  Revision 1.1  2000/12/19 03:22:50  hagel
//  Initial Revision
//