]>
Commit | Line | Data |
---|---|---|
fa3634bd | 1 | // $Id$ |
2 | // Main author: Davide Caffarri 2009 | |
12cc265f | 3 | // Base header class to HF visualization |
fa3634bd | 4 | |
5 | /************************************************************************** | |
6 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * | |
7 | * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * | |
8 | * full copyright notice. * | |
9 | **************************************************************************/ | |
10 | ||
11 | #ifndef AliEveHF_H | |
12 | #define AliEveHF_H | |
13 | ||
14 | #include "AliAODRecoDecay.h" | |
15 | #include "AliEveTrack.h" | |
16 | ||
17 | #include <TEveVSDStructs.h> | |
18 | #include <TPolyLine3D.h> | |
19 | ||
20 | #include <TPDGCode.h> | |
21 | ||
22 | ||
23 | class TH1F; | |
24 | class TH2F; | |
25 | ||
26 | ||
27 | class AliEveHFList; | |
28 | ||
29 | class AliEveHF : public TEvePointSet | |
30 | { | |
12cc265f | 31 | friend class AliEveHFList; //friend class for the list of HF in the same event |
32 | friend class AliEveHFEditor; //friend class for the list of HF visualization | |
fa3634bd | 33 | |
34 | public: | |
35 | AliEveHF(); | |
12cc265f | 36 | AliEveHF(TEveRecTrack* tNeg, TEveRecTrack* tPos, Double_t primVtx[3], AliAODRecoDecay* aodObj, TEveTrackPropagator* rs); |
fa3634bd | 37 | virtual ~AliEveHF(); |
38 | ||
39 | void MakeHF(); | |
40 | ||
41 | virtual void SetMainColor(Color_t col) | |
42 | { | |
43 | TEvePointSet::SetMainColor(col); | |
44 | fPointingLine->SetLineColor(fMarkerColor); | |
45 | } | |
46 | ||
47 | void SetRnrStyle(TEveTrackPropagator* rs) { fRnrStyle = rs; } | |
48 | ||
49 | //HF Property | |
50 | ||
51 | Float_t GetPhi() { return fRecDecayHF.Phi(); } | |
12cc265f | 52 | Float_t GetEta() { return fRecDecayMomHF.Eta(); } |
fa3634bd | 53 | Float_t GetRadius() { return fRecDecayHF.Perp(); } |
12cc265f | 54 | Float_t GetPt() { return fRecDecayMomHF.Perp(); } |
fa3634bd | 55 | |
56 | Double_t GetInvariantMassPart() { CalculateInvMass(fDecay); return fInvariantMassPart; } | |
57 | Double_t GetInvariantMassAntiPart() { CalculateInvMass(fDecay); return fInvariantMassAntiPart; } | |
58 | ||
12cc265f | 59 | Float_t GetChi2Vtx() const { return fChi2SecondVtx; } |
60 | Float_t GetCosPointingAngle() const {return fPointingAngleHF; } | |
fa3634bd | 61 | |
12cc265f | 62 | AliAODRecoDecay *GetAODobj() const {return fAODobj; } |
f8d5a389 | 63 | |
fa3634bd | 64 | Int_t GetAODIndex() const { return fAODIndex; } |
65 | void SetAODIndex(Int_t ind) { fAODIndex = ind;} | |
66 | ||
67 | virtual const Text_t* GetName() const { return Form("AOD_HF_%i",fAODIndex); } | |
68 | virtual const Text_t* GetTitle() const { return Form("AOD_HF_%i",fAODIndex); } | |
f8d5a389 | 69 | |
fa3634bd | 70 | //Prongs Property |
71 | ||
12cc265f | 72 | Double_t GetProngDCA(Int_t iProng)const { return fProngDCA[iProng]; } |
fa3634bd | 73 | void SetProngDCA() const ; |
74 | ||
12cc265f | 75 | Double_t Getd0Prong(Int_t iProng)const { return fProngd0[iProng]; } |
fa3634bd | 76 | void Setd0Prong() const ; |
f8d5a389 | 77 | |
fa3634bd | 78 | void CalculateInvMass(Int_t decay); |
79 | ||
80 | Bool_t SelectInvMass(Int_t decay, Float_t decayCuts); | |
f8d5a389 | 81 | |
fa3634bd | 82 | void SetMaxProbPdgPid(); |
12cc265f | 83 | Int_t GetPdgProngMaxProb(Int_t iProng)const { return fProngMaxProbPdg[iProng]; } |
84 | Double_t GetPidProngMaxProb(Int_t iProng)const { return fProngMaxProbPid[iProng]; } | |
f8d5a389 | 85 | |
fa3634bd | 86 | TEveTrackPropagator* GetPropagator() const { return fRnrStyle; } |
87 | ||
12cc265f | 88 | TEveTrack* GetNegTrack()const { return fNegTrack; } |
89 | TEveTrack* GetPosTrack()const { return fPosTrack; } | |
fa3634bd | 90 | |
12cc265f | 91 | TEveLine* GetPointingLine()const { return fPointingLine; } |
fa3634bd | 92 | |
93 | protected: | |
94 | ||
12cc265f | 95 | AliAODRecoDecay *fAODobj; //AOD object of the HF decay. |
fa3634bd | 96 | |
97 | TEveVector fRecBirthHF; // Reconstucted birth point of neutral particle | |
98 | TEveVector fRecDecayHF; // Point of closest approach | |
12cc265f | 99 | TEveVector fRecDecayMomHF; // Momentum of the HF |
f8d5a389 | 100 | Double_t fPointingAngleHF; // Track Pointing Angle |
fa3634bd | 101 | |
12cc265f | 102 | TEveTrack *fNegTrack; //Negative daughter of the HF |
103 | TEveTrack *fPosTrack; //Positive daughter of the HF | |
fa3634bd | 104 | |
12cc265f | 105 | TEveTrackPropagator *fRnrStyle; //Eve propagator for the track |
fa3634bd | 106 | |
12cc265f | 107 | TEveLine *fPointingLine; //Flight Line of the HF |
fa3634bd | 108 | |
109 | Int_t fnProng; // Number of Prong. | |
110 | Int_t fAODIndex; // Index in HF loop array. | |
111 | Double_t fChi2SecondVtx; //Secondary Vertex Chi-square. | |
112 | ||
f8d5a389 | 113 | Double_t *fProngDCA;//[fnProng] Distance at the point of closest approach. |
114 | Double_t *fProngd0;//[fnProng] Impact Paramter if each prong. | |
fa3634bd | 115 | Int_t *fProngMaxProbPdg;//[fnProng] Maximum PDG probability for the negative daughter |
116 | Double_t *fProngMaxProbPid;//[fnProng] Maximum PID probability for the negative daughter | |
f8d5a389 | 117 | |
12cc265f | 118 | Double_t fInvariantMassPart; //Invariant Mass of the particle |
119 | Double_t fInvariantMassAntiPart; //Invariant Mass of the Antiparticle | |
fa3634bd | 120 | |
12cc265f | 121 | Int_t fDecay; //Index for the type of decay |
f8d5a389 | 122 | |
fa3634bd | 123 | private: |
124 | AliEveHF(const AliEveHF&); // Not implemented | |
125 | AliEveHF& operator=(const AliEveHF&); // Not implemented | |
f8d5a389 | 126 | |
fa3634bd | 127 | ClassDef(AliEveHF,0); // Visual representation of a AliEveHF. |
128 | }; | |
129 | ||
130 | ||
131 | /******************************************************************************/ | |
132 | // AliEveHFList | |
133 | /******************************************************************************/ | |
134 | class AliEveHFList : public TEveElementList | |
135 | { | |
12cc265f | 136 | friend class AliEveHFListEditor; //Class for the list of HF visualization |
137 | ||
fa3634bd | 138 | |
139 | public: | |
140 | AliEveHFList(); | |
141 | AliEveHFList(TEveTrackPropagator* rs); | |
142 | AliEveHFList(const Text_t* name, TEveTrackPropagator* rs=0); | |
143 | virtual ~AliEveHFList() {} | |
144 | ||
145 | virtual const Text_t* GetTitle() const { return fTitle; } | |
146 | virtual void SetTitle(const Text_t* t) { fTitle = t; } | |
f8d5a389 | 147 | virtual void SetTracksColor(Color_t cNeg, Color_t cPos, Int_t ip) |
fa3634bd | 148 | {fProngColor[ip] = cNeg; fProngColor[ip++] = cPos;} |
149 | ||
150 | virtual Bool_t CanEditMainColor() const { return kTRUE; } | |
151 | ||
152 | void SetRnrStyle(TEveTrackPropagator* rst) { fRnrStyle = rst; } | |
153 | TEveTrackPropagator* GetPropagator() { return fRnrStyle; } | |
154 | ||
155 | Bool_t GetRnrHFvtx() const { return fRnrHFvtx; } | |
156 | Bool_t GetRnrHFpath() const { return fRnrHFpath; } | |
157 | Bool_t GetRnrDaughters() const { return fRnrDaughters; } | |
158 | ||
159 | void MakeHFs(); | |
160 | ||
161 | void FilterByPt(Float_t minPt, Float_t maxPt); | |
162 | void FilterByRadius(Float_t minR, Float_t maxR); | |
163 | void FilterByCosPointingAngle(Float_t minCosPointingAngle, Float_t maxCosPointingAngle); | |
164 | void FilterByDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA); | |
165 | void FilterByd0(Float_t mind0, Float_t maxd0); | |
166 | //void FilterByCheckedPidMinProb(Int_t rFlag, Int_t rDaughter, Int_t rPid, Float_t rProb); | |
f8d5a389 | 167 | |
fa3634bd | 168 | // void SetProngCheckedPid(Int_t rProngCheckedPid) const; |
169 | Int_t GetProngCheckedPid(Int_t iProng) {return fProngCheckedPid[iProng];} | |
170 | // void SetProngCheckedProb(Float_t rProngCheckedProb) const; | |
171 | // Float_t GetProngCheckedProb(Int_t iProng) const { return fProngCheckedProb[iProng]; } | |
172 | ||
173 | void FilterByInvariantMass (Int_t decay, Float_t deltaInvariantMass); | |
174 | ||
175 | protected: | |
12cc265f | 176 | TString fTitle; |
fa3634bd | 177 | |
178 | TEveTrackPropagator *fRnrStyle; | |
179 | ||
12cc265f | 180 | Bool_t fRnrDaughters; //variable for HF daughters visualization |
181 | Bool_t fRnrHFvtx; //variable for the HF vertex visualization | |
182 | Bool_t fRnrHFpath; //variable for the visualization of the HF line | |
fa3634bd | 183 | |
184 | Color_t* fProngColor;//[fnProng] | |
185 | ||
12cc265f | 186 | Float_t fMinRCut; //minimum cut for the radius |
187 | Float_t fMaxRCut; //maximum cut for the radius | |
fa3634bd | 188 | |
12cc265f | 189 | Float_t fMinDaughterDCA; //minimum cut for the DCA of the daughter particles |
190 | Float_t fMaxDaughterDCA; //maximum cut for the DCA of the daughter particles | |
fa3634bd | 191 | |
12cc265f | 192 | Float_t fMinPt; //minimum cut for the Pt |
193 | Float_t fMaxPt; //maximum cut for the Pt | |
fa3634bd | 194 | |
12cc265f | 195 | Float_t fMinCosPointingAngle; //minimum cut for the cosine of the pointing angle |
196 | Float_t fMaxCosPointingAngle; //maximum cut for the cosine of the pointing angle | |
f8d5a389 | 197 | |
12cc265f | 198 | Float_t fMind0; //minimum cut for the impact parameter |
199 | Float_t fMaxd0; //maximum cut for the impact parameter | |
fa3634bd | 200 | |
201 | Int_t* fProngCheckedPid;//[fnProng] | |
202 | ||
203 | Float_t* fProngCheckedProb;//[fnProng] | |
f8d5a389 | 204 | |
12cc265f | 205 | Float_t fDeltaInvariantMass; //invariant mass window to select the candidate |
206 | Int_t fDecay; //index for the type of decay | |
fa3634bd | 207 | |
208 | private: | |
209 | void Init(); | |
210 | ||
211 | AliEveHFList(const AliEveHFList&); // Not implemented | |
212 | AliEveHFList& operator=(const AliEveHFList&); // Not implemented | |
213 | ||
214 | ClassDef(AliEveHFList,0); // A list of AliEveHF objecs. | |
215 | }; | |
216 | ||
217 | ||
218 | #endif |