]>
Commit | Line | Data |
---|---|---|
b594a020 | 1 | // $Id$ |
2 | // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 | |
3 | ||
4 | /************************************************************************** | |
5 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * | |
6 | * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * | |
7 | * full copyright notice. * | |
8 | **************************************************************************/ | |
ea47a1d6 | 9 | |
b594a020 | 10 | #ifndef AliEveV0_H |
11 | #define AliEveV0_H | |
12 | ||
b594a020 | 13 | |
ea47a1d6 | 14 | //------------------------------------------------------------------------------ |
15 | // AliEveV0 | |
16 | //------------------------------------------------------------------------------ | |
17 | // | |
18 | // Representation of a reconstructed V0. | |
19 | // | |
20 | // | |
21 | //------------------------------------------------------------------------------ | |
22 | // AliEveV0List | |
23 | //------------------------------------------------------------------------------ | |
24 | // | |
25 | // Container for AliEveV0s. | |
26 | // | |
27 | // Allows runtime selection by pT and DCA of daughters, radius of V0 | |
28 | // creation and PID priobabilities | |
b594a020 | 29 | |
ea47a1d6 | 30 | //============================================================================== |
b594a020 | 31 | |
0e33c639 | 32 | #include "AliEveTrack.h" |
b594a020 | 33 | #include <TEveVSDStructs.h> |
b594a020 | 34 | |
b594a020 | 35 | #include <TPolyLine3D.h> |
36 | ||
d4dbbb43 | 37 | #include <TPDGCode.h> |
38 | ||
b594a020 | 39 | class TH1F; |
40 | class TH2F; | |
41 | ||
42 | ||
43 | class AliEveV0List; | |
44 | ||
45 | class AliEveV0 : public TEvePointSet | |
46 | { | |
47 | friend class AliEveV0List; | |
68ca2fe7 | 48 | friend class AliEveV0Editor; |
b594a020 | 49 | |
50 | public: | |
51 | AliEveV0(); | |
52 | AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos, TEveRecV0* v0, | |
53 | TEveTrackPropagator* rs); | |
54 | virtual ~AliEveV0(); | |
55 | ||
b594a020 | 56 | void MakeV0(); |
57 | ||
b594a020 | 58 | virtual void SetMainColor(Color_t col) |
59 | { | |
e6e8b28b | 60 | TEvePointSet::SetMainColor(col); |
61 | fPointingLine->SetLineColor(fMarkerColor); | |
b594a020 | 62 | } |
63 | ||
64 | void SetRnrStyle(TEveTrackPropagator* rs) { fRnrStyle = rs; } | |
65 | ||
66 | Float_t GetDaughterDCA() const { return fDaughterDCA; } | |
67 | void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; } | |
68 | ||
e7c12214 | 69 | Float_t GetPhi() const { return fRecDecayP.Phi(); } |
70 | Float_t GetEta() const { return fRecDecayP.Eta(); } | |
b594a020 | 71 | Float_t GetRadius() const { return fRecDecayV.Perp(); } |
e1bb28b4 | 72 | Float_t GetPt() const { return fRecDecayP.Perp(); } |
b594a020 | 73 | |
2c7d7ac0 | 74 | Float_t GetInvMass(Int_t nPdgCode, Int_t pPdgCode) const; |
d4dbbb43 | 75 | Float_t GetK0sInvMass() const { return GetInvMass(kPiMinus,kPiPlus); } |
76 | Float_t GetLambdaInvMass() const { return GetInvMass(kPiMinus,kProton); } | |
77 | Float_t GetAntiLambdaInvMass() const { return GetInvMass(kProton,kPiPlus); } | |
78 | ||
ca8a6926 | 79 | Bool_t GetOnFlyStatus() const { return fOnFlyStatus; } |
80 | void SetOnFlyStatus(Bool_t fs) { fOnFlyStatus = fs; } | |
81 | ||
2c7d7ac0 | 82 | void SetMaxProbPdgPid(Int_t iDaughter, Int_t rPdg, Float_t rPid); |
83 | Int_t GetNegMaxProbPdg() const { return fNegMaxProbPdg; } | |
84 | Int_t GetPosMaxProbPdg() const { return fPosMaxProbPdg; } | |
85 | Float_t GetNegMaxProbPid() const { return fNegMaxProbPid; } | |
86 | Float_t GetPosMaxProbPid() const { return fPosMaxProbPid; } | |
87 | ||
b594a020 | 88 | Int_t GetESDIndex() const { return fESDIndex; } |
89 | void SetESDIndex(Int_t ind) { fESDIndex = ind;} | |
90 | ||
ea47a1d6 | 91 | virtual const Text_t* GetName() const { return Form("ESDv0_%i",fESDIndex); } |
92 | virtual const Text_t* GetTitle() const { return Form("ESDv0_%i",fESDIndex); } | |
b594a020 | 93 | |
b594a020 | 94 | TEveTrackPropagator* GetPropagator() const { return fRnrStyle; } |
95 | ||
ea47a1d6 | 96 | AliEveTrack* GetNegTrack() const { return fNegTrack; } |
97 | AliEveTrack* GetPosTrack() const { return fPosTrack; } | |
b594a020 | 98 | |
ea47a1d6 | 99 | TEveLine* GetPointingLine() const { return fPointingLine; } |
b594a020 | 100 | |
101 | protected: | |
102 | TEveVector fRecBirthV; // Reconstucted birth point of neutral particle | |
103 | TEveVector fRecDecayV; // Point of closest approach | |
ea47a1d6 | 104 | TEveVector fRecDecayP; // Reconstructed momentum of decayed particle. |
b594a020 | 105 | |
ea47a1d6 | 106 | AliEveTrack *fNegTrack; // Representation of negative track. |
107 | AliEveTrack *fPosTrack; // Representation of positive track. | |
b594a020 | 108 | |
ea47a1d6 | 109 | TEveTrackPropagator *fRnrStyle; // Track propagator for neg/pos track. |
b594a020 | 110 | |
ea47a1d6 | 111 | TEveLine *fPointingLine; // Representation of pointing line. |
b594a020 | 112 | |
ca8a6926 | 113 | Int_t fESDIndex; // Index in ESD V0 array. |
114 | Bool_t fOnFlyStatus; // Reconstructed during tracking. | |
115 | Float_t fDaughterDCA; // Distance at the point of closest approach. | |
116 | Float_t fChi2V0; // Some Chi-square. | |
b594a020 | 117 | |
2c7d7ac0 | 118 | Int_t fNegMaxProbPdg; // Maximum PDG probability for the negative daughter |
119 | Int_t fPosMaxProbPdg; // Maximum PDG probability for the positive daughter | |
120 | Float_t fNegMaxProbPid; // Maximum PID probability for the negative daughter | |
121 | Float_t fPosMaxProbPid; // Maximum PID probability for the positive daughter | |
122 | ||
b594a020 | 123 | private: |
124 | AliEveV0(const AliEveV0&); // Not implemented | |
125 | AliEveV0& operator=(const AliEveV0&); // Not implemented | |
126 | ||
127 | ClassDef(AliEveV0, 0); // Visual representation of a AliEveV0. | |
128 | }; | |
129 | ||
130 | ||
131 | /******************************************************************************/ | |
132 | // AliEveV0List | |
133 | /******************************************************************************/ | |
134 | ||
135 | class AliEveV0List : public TEveElementList | |
136 | { | |
ca8a6926 | 137 | friend class AliEveV0ListEditor; |
138 | ||
b594a020 | 139 | public: |
140 | AliEveV0List(); | |
141 | AliEveV0List(TEveTrackPropagator* rs); | |
142 | AliEveV0List(const Text_t* name, TEveTrackPropagator* rs=0); | |
e6e8b28b | 143 | virtual ~AliEveV0List() {} |
b594a020 | 144 | |
145 | virtual const Text_t* GetTitle() const { return fTitle; } | |
146 | virtual void SetTitle(const Text_t* t) { fTitle = t; } | |
147 | virtual void SetTracksColor(Color_t cNeg, Color_t cPos) { | |
148 | fNegColor = cNeg; fPosColor = cPos;} | |
149 | ||
150 | virtual Bool_t CanEditMainColor() const { return kTRUE; } | |
151 | ||
b594a020 | 152 | void SetRnrStyle(TEveTrackPropagator* rst) { fRnrStyle = rst; } |
153 | TEveTrackPropagator* GetPropagator() { return fRnrStyle; } | |
154 | ||
155 | Bool_t GetRnrV0vtx() const { return fRnrV0vtx; } | |
156 | Bool_t GetRnrV0path() const { return fRnrV0path; } | |
157 | Bool_t GetRnrDaughters() const { return fRnrDaughters; } | |
158 | ||
b594a020 | 159 | void MakeV0s(); |
b594a020 | 160 | |
ca8a6926 | 161 | void FilterByRadius(Float_t minR, Float_t maxR); |
e1bb28b4 | 162 | void FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA); |
163 | void FilterByPt(Float_t minPt, Float_t maxPt); | |
2c7d7ac0 | 164 | void FilterByCheckedPidMinProb(Int_t rFlag, Int_t rDaughter, Int_t rPid, Float_t rProb); |
165 | void SetNegCheckedPid(Int_t rNegCheckedPid) {fNegCheckedPid = rNegCheckedPid;} | |
166 | void SetPosCheckedPid(Int_t rPosCheckedPid) {fPosCheckedPid = rPosCheckedPid;} | |
ea47a1d6 | 167 | Int_t GetNegCheckedPid() const { return fNegCheckedPid; } |
168 | Int_t GetPosCheckedPid() const { return fPosCheckedPid; } | |
2c7d7ac0 | 169 | |
170 | void SetNegCheckedProb(Float_t rNegCheckedProb) {fNegCheckedProb = rNegCheckedProb;} | |
171 | void SetPosCheckedProb(Float_t rPosCheckedProb) {fPosCheckedProb = rPosCheckedProb;} | |
ea47a1d6 | 172 | Float_t GetNegCheckedProb() const { return fNegCheckedProb; } |
173 | Float_t GetPosCheckedProb() const { return fPosCheckedProb; } | |
2c7d7ac0 | 174 | |
175 | void FilterByInvariantMass(Float_t minPt, Float_t maxPt, Int_t nPdgCode, Int_t pPdgCode); | |
ca8a6926 | 176 | |
b594a020 | 177 | protected: |
ea47a1d6 | 178 | TString fTitle; // Title of the object. |
b594a020 | 179 | |
ea47a1d6 | 180 | TEveTrackPropagator *fRnrStyle; // Track propagator to be passed do conteined V0s. |
b594a020 | 181 | |
ea47a1d6 | 182 | Bool_t fRnrDaughters; // Flag - display daughter tracks. |
183 | Bool_t fRnrV0vtx; // Flag - display V0 vertex. | |
184 | Bool_t fRnrV0path; // Flag - display V0 path. | |
b594a020 | 185 | |
ea47a1d6 | 186 | Color_t fNegColor; // Color for negative tracks. |
187 | Color_t fPosColor; // Color for positive tracks. | |
b594a020 | 188 | |
ea47a1d6 | 189 | Float_t fMinRCut; // Minimum radius cut. |
190 | Float_t fMaxRCut; // Maximum radius cut. | |
ca8a6926 | 191 | |
ea47a1d6 | 192 | Float_t fMinDaughterDCA; // Minimum daughter DCA cut. |
193 | Float_t fMaxDaughterDCA; // Maximum daughter DCA cut. | |
e1bb28b4 | 194 | |
ea47a1d6 | 195 | Float_t fMinPt; // Minimum Pt cut. |
196 | Float_t fMaxPt; // Maximum Pt cut. | |
e1bb28b4 | 197 | |
ea47a1d6 | 198 | Int_t fNegCheckedPid; // BORIS ? |
199 | Int_t fPosCheckedPid; // BORIS ? | |
2c7d7ac0 | 200 | |
ea47a1d6 | 201 | Float_t fNegCheckedProb; // BORIS ? |
202 | Float_t fPosCheckedProb; // BORIS ? | |
2c7d7ac0 | 203 | |
ea47a1d6 | 204 | Float_t fMinInvariantMass; // Minimum invariant mass cut. |
205 | Float_t fMaxInvariantMass; // Maximum invariant mass cut. | |
2c7d7ac0 | 206 | |
b594a020 | 207 | private: |
e6e8b28b | 208 | void Init(); |
b594a020 | 209 | |
210 | AliEveV0List(const AliEveV0List&); // Not implemented | |
211 | AliEveV0List& operator=(const AliEveV0List&); // Not implemented | |
212 | ||
213 | ClassDef(AliEveV0List, 0); // A list of AliEveV0 objecs. | |
214 | }; | |
215 | ||
216 | ||
217 | #endif |