#ifndef STNTUPLE_TStnJPTrack #define STNTUPLE_TStnJPTrack #include "TObject.h" class CdfTrack; class JPTrack; class TStnJPTrack: public TObject { friend Int_t StntupleInitJPTrack( TStnJPTrack*, const JPTrack*); protected: Short_t fTrkInd; // track id Short_t fNumShSvxHit; // # shared SVX hits Short_t fNShSvxPhiHit; // # shared Phi hits Short_t fNShSvxStHit; // # shared Stereo hits Short_t fNShSvxZHit; // # shared Z hits Short_t fNShSvxLay; // # shared SVX layers Short_t fInnermostRPhiLayer; // innermost layer reached Short_t fInnermostRZLayer; // innermost layer reached Short_t fTrackQtyRPhi; // obsolete, will go away, do not write them out Short_t fTrackQtyRZ; // obsolete Short_t fNumHitInLayer[2][8]; // obsolete [2] -> Type(0=RPhi, 1=Stereo) [8] -> all 8 layers Short_t fNumShHitInLayer[2][8]; // obsolete [2] -> Type(0=RPhi, 1=Stereo) [8] -> all 8 layers Int_t fTrkQtyWordRPhi; Int_t fTrkQtyWordRZ; Int_t fHitInfoInLayer[2][8]; // [2] -> Type(0=RPhi, 1=Stereo) [8] -> all 8 layers Int_t fExptHitInfoInLayer[2][8]; // [2] -> Type(0=RPhi, 1=Stereo) [8] -> all 8 layers Float_t fZ0; // Z0 Float_t fZ0Err; // error of Z0 (corr wrt prim vtx) Float_t fSignZ0; // signed Z0 (corrected) Float_t fD0; // IP Float_t fD0Err; // Error of IP (D0Err) (corr wrt prim vtx) Float_t fSignD0; // signed Impact Parameter (SignIP) Float_t fTrackProbRPhi; // Track Probability Float_t fTrackProbRZ; // Track Probability Float_t fTrackProb3D; // Track Probability Float_t fTrackProb[5]; // Different comniantion of probabylities above const CdfTrack* fCdfTrack; //! pointer to parent CdfTrack for // internal use //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- public: TStnJPTrack(Int_t Num = 0); virtual ~TStnJPTrack(); // ****** accessor functions Int_t TrackNumber () const { return fTrkInd ;} Int_t NumShSvxHit () const { return fNumShSvxHit ;} Int_t NShSvxPhiHit () const { return fNShSvxPhiHit ;} Int_t NShSvxStHit () const { return fNShSvxStHit ;} Int_t NShSvxZHit () const { return fNShSvxZHit ;} Int_t NShSvxLay () const { return fNShSvxLay ;} Int_t InnermostRPhiLayer() const { return fInnermostRPhiLayer ;} Int_t InnermostRZLayer () const { return fInnermostRZLayer ;} // method to access old variables Int_t TrackQtyRPhi () const; Int_t TrackQtyRZ () const; Int_t NumHitInLayer (Int_t rphi, Int_t layer) const; Int_t NumShHitInLayer (Int_t rphi, Int_t layer) const; // method to access old variables Float_t Z0 () const { return fZ0 ;} Float_t Z0Err () const { return fZ0Err ;} Float_t SignZ0() const { return fSignZ0;} Float_t D0 () const { return fD0 ;} Float_t D0Err () const { return fD0Err ;} Float_t SignD0() const { return fSignD0;} Float_t TrackProbRPhi() const { return fTrackProbRPhi;} Float_t TrackProbRZ () const { return fTrackProbRZ ;} Float_t TrackProb3D () const { return fTrackProb3D ;} Float_t TrackProb (Int_t i) const { return fTrackProb[i];} const CdfTrack* GetCdfTrack() const { return fCdfTrack;} // // method to access new variables // Int_t TrkQualityWordRPhi () const { return fTrkQtyWordRPhi;} Int_t TrkQualityWordRZ () const { return fTrkQtyWordRZ;} Int_t TrkQualityRPhi () const; Int_t TrkQualityRZ () const; Int_t LongLiveFlagRPhi () const; Int_t LongLiveFlagRZ () const; bool IsTrackGoodRPhi() const; bool IsTrackGoodRZ() const; Int_t NumberHitInLayer (Int_t rphi, Int_t layer) const; Int_t NumberShHitInLayer (Int_t rphi, Int_t layer) const; Int_t NumGoodHitInLayer (Int_t iType, Int_t iLayer) const; Int_t NumExptHitInLayer (Int_t rphi, Int_t layer) const; Int_t NumIntgHitInLayer (Int_t rphi, Int_t layer) const; Int_t NumRdErHitInLayer (Int_t rphi, Int_t layer) const; Int_t TotNumSVXRPhiLayHit() const; // only count hits in SVX ladders (no L00 or ISL) Int_t TotNumSVXRPhiLayShHit() const; // only count shared hits in SVX ladders (no L00 or ISL) Int_t TotNumGoodSVXRPhiLayHit() const; // only count hits in SVX ladders (no L00 or ISL) Int_t NumStripInCluster(Int_t iType, Int_t iLayer, Int_t hitNum) const; //cluster size in # strips bool AnyBadStripInCluster(Int_t iType, Int_t iLayer, Int_t hitNum) const; //Any bad strips ? // bool NumGoodSVXRPhiLayHit() const; // => use same definitaion as SecVtx // // If there are > 1 hit due to overlap in the wedges, will only consider as 1 hit // Example: Layer 4 => 2 expected hits => will count as 1 expected layer hit // Layer 4 => 2 integrated hits => will count as 1 integrated layer hit // Layer 4 => 2 integrated hits, no read err => count 0 read error // Layer 4 => 2 integrated hits, 1 read err => count 0 read error // Layer 4 => 2 integrated hits, 2 read err => count 1 read error // Int_t TotNExptSVXRPhiLayHit() const; // only count hits in SVX ladders (no L00 or ISL) Int_t TotNIntgSVXRPhiLayHit() const; // only count hits in SVX ladders (no L00 or ISL) Int_t TotNRdErSVXRPhiLayHit() const; // only count hits in SVX ladders (no L00 or ISL) // ****** modifiers // ****** overloaded methods of TObject void SetTrackNumber(Int_t it) { fTrkInd = it; } void SetNumber (Int_t Num) { SetUniqueID(Num); } void Print(Option_t* opt = "") const; // Re-Setters void SetD0(Float_t D0_New) { fD0 = D0_New; } void SetD0Err(Float_t D0Err_New) { fD0Err = D0Err_New; } void SetSignD0(Float_t SignD0_New) { fSignD0 = SignD0_New; } void SetZ0(Float_t Z0_New) { fZ0 = Z0_New; } void SetZ0Err(Float_t Z0Err_New) { fZ0Err = Z0Err_New; } void SetSignZ0(Float_t SignZ0_New) { fSignZ0 = SignZ0_New; } void SetTrackProbRPhi(Float_t New) { fTrackProbRPhi = New; } void SetTrackProbRZ(Float_t New) { fTrackProbRZ = New; } void SetTrackProb3D(Float_t New) { fTrackProb3D = New; } void SetTrackProb(Int_t i, Float_t New) { fTrackProb[i] = New; } void SetTrackQtyRPhi(int TrackQty); void SetTrackQtyRZ(int TrackQty); void ReadV1(TBuffer& R__b); ClassDef(TStnJPTrack,2) }; #endif