]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveHF.h
From Pawel Debski.
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveHF.h
CommitLineData
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
23class TH1F;
24class TH2F;
25
26
27class AliEveHFList;
28
29class 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
34public:
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
93protected:
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/******************************************************************************/
134class AliEveHFList : public TEveElementList
135{
12cc265f 136 friend class AliEveHFListEditor; //Class for the list of HF visualization
137
fa3634bd 138
139public:
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
175protected:
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
208private:
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