Line data Source code
1 : #ifndef ALITRDTRACKGTU_H
2 : #define ALITRDTRACKGTU_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id: AliTRDtrackGTU.h 27496 2008-07-22 08:35:45Z cblume $ */
7 :
8 : //---------------------------------------------------------------
9 : //
10 : // TRD track as calculated in the GTU (for L1 contribution)
11 : //
12 : //---------------------------------------------------------------
13 :
14 : #include "TClonesArray.h"
15 :
16 : #include "AliTRDtrackletGTU.h"
17 : class AliESDTrdTrack;
18 :
19 : class AliTRDtrackGTU : public TObject {
20 : public:
21 : AliTRDtrackGTU();
22 : AliTRDtrackGTU(const AliTRDtrackGTU &rhs);
23 : AliTRDtrackGTU& operator=(const AliTRDtrackGTU &rhs);
24 : AliTRDtrackGTU& operator=(const AliESDTrdTrack &rhs);
25 : ~AliTRDtrackGTU();
26 :
27 : // ----- Track properties
28 60 : Int_t GetPtInt() const { return AliTRDgtuParam::GetPt(fTrackletMask, (Int_t) this->GetA(), 0, 0, 0, 0); }
29 60 : Float_t GetPt() const { return (Float_t) this->GetPtInt() / 128.; }
30 18 : Int_t GetPID() const { return fPID; }
31 48 : Int_t GetSector() const { return fSector; }
32 48 : Int_t GetStack() const { return fStack; }
33 0 : Int_t GetLabel() const { return fLabel; }
34 :
35 : AliESDTrdTrack* CreateTrdTrack() const;
36 :
37 : // ----- compositing tracklets
38 : Int_t GetNTracklets() const;
39 2646 : Int_t GetTrackletMask() const { return fTrackletMask; }
40 : Bool_t IsTrackletInLayer(Int_t layer) const;
41 216 : Int_t GetTrackletIndex(Int_t layer) { return IsTrackletInLayer(layer) ? ((AliTRDtrackletGTU*) (*fTracklets)[layer])->GetIndex() : -1; }
42 : AliTRDtrackletGTU* GetTracklet(Int_t layer) const;
43 :
44 : // ----- Quantities used internally for the calculation
45 60 : Float_t GetA() const { return fA; }
46 0 : Float_t GetB() const { return (fB / 128.); }
47 0 : Float_t GetC() const { return (fC / 256.); }
48 0 : Int_t GetInvPtDev() const { return fInvPtDev; }
49 552 : Int_t GetZChannel() const { return fZChannel; }
50 : Int_t GetZSubChannel();
51 0 : Int_t GetRefLayer() const { return AliTRDgtuParam::GetRefLayer(fRefLayerIdx); }
52 0 : Int_t GetRefLayerIdx() const { return fRefLayerIdx; }
53 : Int_t GetYapprox();
54 :
55 :
56 : void AddTracklet(const AliTRDtrackletGTU * const tracklet, Int_t layer);
57 :
58 142 : void SetStack(Int_t stack) { fStack = stack; }
59 142 : void SetSector(Int_t sector) { fSector = sector; }
60 30 : void SetPID(Int_t pid) { fPID = pid; }
61 0 : void SetLabel(Int_t label) { fLabel = label; }
62 :
63 64 : void SetZChannel(Int_t zch) { fZChannel = zch; }
64 64 : void SetRefLayerIdx(Int_t reflayer) { fRefLayerIdx = reflayer; }
65 : // void SetInnerIntPoint(Float_t *x);
66 : // void SetOuterIntPoint(Float_t *x);
67 : void SetFitParams(Float_t a, Float_t b, Float_t c);
68 30 : void SetInvPtDev(Int_t invPtDev) { fInvPtDev = invPtDev; }
69 :
70 : Bool_t CookLabel();
71 :
72 : protected:
73 :
74 : Int_t fStack; // TRD stack to which this track belongs
75 : Int_t fSector; // sector in which the track was found
76 :
77 : Int_t fPID; // PID calculated from tracklet PID
78 :
79 : TClonesArray *fTracklets; // array holding the tracklets composing this track
80 : Int_t fTrackletMask; // mask in which layers tracklets have been assigned
81 : Int_t fNTracklets; // number of tracklets in this track
82 :
83 : Int_t fRefLayerIdx; // index of the reference layer in which this track was found
84 : Int_t fZChannel; // z-channel unit in which this track was found
85 : Int_t fZSubChannel; // z-subchannel of the assigned tracklets
86 :
87 : Float_t fA; // fit parameter of y' = a + b*x + c*z
88 : Float_t fB; // fit parameter of y' = a + b*x + c*z
89 : Float_t fC; // fit parameter of y' = a + b*x + c*z
90 :
91 : Int_t fInvPtDev; // 1/pt deviation from determination via linear fit and via sagitta
92 :
93 : Int_t fLabel; // MC label
94 :
95 52 : ClassDef(AliTRDtrackGTU, 1);
96 : };
97 :
98 : #endif
|