#ifndef CBML1TRDTRACKLET4_H #define CBML1TRDTRACKLET4_H 1 #include #include using namespace std; class CbmL1TrdTracklet4 : public TObject { public: /** Default constructor **/ CbmL1TrdTracklet4(); //CbmL1TrdTracklet(Int_t indLeft, Int_t indRight) {fIndLeft=indLeft; fIndRight=indRight;}; /** Destructor **/ virtual ~CbmL1TrdTracklet4(); //get a given hit hit index inline Int_t GetInd1() { return fInd1; }; inline Int_t GetInd2() { return fInd2; }; inline Int_t GetInd3() { return fInd3; }; inline Int_t GetInd4() { return fInd4; }; //gets the appropriate coordinate values inline Double_t GetCoord1() { return fCoord1; }; inline Double_t GetCoord2() { return fCoord2; }; inline Double_t GetCoord3() { return fCoord3; }; inline Double_t GetCoord4() { return fCoord4; }; //value of the tracklet used in tagging inline Int_t GetVal() { return fVal; }; //says if this tracklet has any left-side neighbours inline Int_t GetIsAlone() { return fIsAlone; }; inline Int_t GetIndex() { return fIndex; }; //sets the index of a given hit inline void SetInd1(Int_t ind1) { fInd1 = ind1; }; inline void SetInd2(Int_t ind2) { fInd2 = ind2; }; inline void SetInd3(Int_t ind3) { fInd3 = ind3; }; inline void SetInd4(Int_t ind4) { fInd4 = ind4; }; //sets the appropriate coordinate values //Coord1 usually = Y inline void SetCoord1(Double_t a) { fCoord1 = a; }; //Coord2 usually = X inline void SetCoord2(Double_t a) { fCoord2 = a; }; //Coord3 usually = Y inline void SetCoord3(Double_t a) { fCoord3 = a; }; //Coord4 usually = X inline void SetCoord4(Double_t a) { fCoord4 = a; }; //set value of the tracklet used in tagging inline void SetVal(Int_t segVal) { fVal = segVal; }; //sets flag if this tracklet has any left-side neighbours inline void SetIsAlone(Bool_t isAlone) { fIsAlone = isAlone; }; inline void SetIndex(Int_t index) { fIndex = index; }; //get extrapolated value of the precise coordinate of the 1st layer inline Double_t GetExt1() { return fExt1; }; //get extrapolated value of the precise coordinate of the 2nd layer inline Double_t GetExt2() { return fExt2; }; //set extrapolated value of the precise coordinate of the 1st layer inline void SetExt1(Double_t a) { fExt1 = a; }; //set extrapolated value of the precise coordinate of the 2nd layer inline void SetExt2(Double_t a) { fExt2 = a; }; vector vAccostTracklet; //position of next tracklets in vector vector vAccostLeft; //position of next tracklets in vector vector vAccostRight; //position of next tracklets in vector //compares two first (or two second) coordinates of two tracklets inline static Bool_t compare1(CbmL1TrdTracklet4 *tr1, CbmL1TrdTracklet4 *tr2) { return (tr1->GetCoord1() < tr2->GetCoord1()); }; inline static Bool_t compare2(CbmL1TrdTracklet4 *tr1, CbmL1TrdTracklet4 *tr2) { return (tr1->GetCoord2() < tr2->GetCoord2()); }; inline static Bool_t Compare3S(CbmL1TrdTracklet4 *tr1, CbmL1TrdTracklet4 *tr2) { return (tr1->GetVal() > tr2->GetVal()); }; //to store 4 Z value Double_t M[4]; private: //indexes of the four consistuent hits Int_t fInd1; Int_t fInd2; Int_t fInd3; Int_t fInd4; //tracklet tag value Int_t fVal; Int_t fY; //says if a tracklet has any left-sede neighbours Bool_t fIsAlone; Int_t fIndex; Double_t fExt1; //coordinates extrapolated to the next station (X or Y) Double_t fExt2; Double_t fCoord1; //more precisely determined coordinate from the leftmost hit Double_t fCoord2; //more precisely determined coordinate from the middle-left hit Double_t fCoord3; //more precisely determined coordinate from the middle-right hit Double_t fCoord4; //more precisely determined coordinate from the rightmost hit ClassDef(CbmL1TrdTracklet4,1); }; #endif