]>
Commit | Line | Data |
---|---|---|
2991d609 | 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 | **************************************************************************/ | |
9 | #ifndef ALIEVECASCADE_H | |
10 | #define ALIEVECASCADE_H | |
11 | ||
12 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
13 | * See cxx source for full Copyright notice */ | |
14 | ||
15 | ||
9851a663 | 16 | //---------------------------------------------------------------------------- |
17 | // This code defines the reconstructed cascade (ESD level) visualized with EVE | |
18 | // | |
19 | // Origin : Boris Hippolyte, IPHC (hippolyt@in2p3.fr) | |
20 | // Modified : Antonin Maire, April 2009, IPHC (antonin.maire@cern.ch) | |
21 | //---------------------------------------------------------------------------- | |
22 | ||
23 | class TH1F; | |
24 | class TH2F; | |
25 | class TVector3; | |
26 | ||
27 | class TEveVSDStructs; | |
28 | class TEveTrackPropagator; | |
29 | class TEveLine; | |
30 | class TEveVector; | |
2991d609 | 31 | |
32 | #include <TEveVSDStructs.h> | |
9851a663 | 33 | #include <TEvePointSet.h> |
34 | #include <TPDGCode.h> | |
2991d609 | 35 | |
9851a663 | 36 | |
0e33c639 | 37 | class AliEveCascadeList; |
2991d609 | 38 | |
9851a663 | 39 | #include "AliEveTrack.h" |
40 | ||
2991d609 | 41 | |
9851a663 | 42 | |
2991d609 | 43 | class AliEveCascade : public TEvePointSet |
44 | { | |
45 | friend class AliEveCascadeList; | |
9851a663 | 46 | friend class AliEveCascadeEditor; |
2991d609 | 47 | |
48 | public: | |
49 | AliEveCascade(); | |
9851a663 | 50 | AliEveCascade(TEveRecTrack* tBac, |
51 | TEveRecTrack* tNeg, | |
52 | TEveRecTrack* tPos, | |
53 | TEveRecV0* v0, | |
54 | TEveRecCascade* cascade, | |
55 | TEveTrackPropagator* rs); | |
2991d609 | 56 | virtual ~AliEveCascade(); |
57 | ||
58 | void MakeCascade(); | |
59 | ||
60 | virtual void SetMainColor(Color_t col) | |
61 | { | |
62 | TEvePointSet::SetMainColor(col); | |
73ce6137 | 63 | fPointingCurve->SetLineColor(fMarkerColor); |
64 | fV0Path->SetLineColor(fMarkerColor); | |
2991d609 | 65 | } |
66 | ||
9851a663 | 67 | void SetRnrStyle( TEveTrackPropagator* const rs) { fRnrStyle = rs; } |
68 | ||
69 | Float_t GetDaughterDCA() const { return fDaughterDCA; } | |
70 | void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; } | |
71 | ||
72 | Float_t GetRadius() const { return fRecDecayV.Perp(); } | |
73 | Float_t GetPt() const { return fRecDecayP.Perp(); } | |
74 | Float_t GetPtot() const { return fRecDecayP.Mag(); } | |
75 | ||
76 | Float_t GetPhi() const { return fRecDecayP.Phi(); } | |
77 | Float_t GetTheta() const { return fRecDecayP.Theta(); } | |
78 | Float_t GetEta() const { return fRecDecayP.Eta(); } | |
79 | Int_t GetCharge() const { return fBacTrack->GetCharge(); } | |
80 | ||
81 | Double_t GetInvMass(Int_t cascadePdgCodeHyp) const; | |
82 | Float_t GetXiMinusInvMass() const { return GetInvMass( kXiMinus); } | |
83 | Float_t GetOmegaMinusInvMass() const { return GetInvMass( kOmegaMinus); } | |
84 | Float_t GetXiPlusInvMass() const { return GetInvMass(-kXiMinus); } | |
85 | Float_t GetOmegaPlusInvMass() const { return GetInvMass(-kOmegaMinus); } | |
86 | ||
87 | ||
88 | Int_t GetESDIndex() const { return fESDIndex; } | |
89 | void SetESDIndex(Int_t ind) { fESDIndex = ind;} | |
90 | ||
91 | TVector3 GetLambdaP() const { return fLambdaP; } | |
92 | void SetLambdaP(Double_t px, Double_t py, Double_t pz) { fLambdaP.SetXYZ(px, py, pz); } | |
93 | ||
94 | TVector3 GetBachP() const { return fBachP; } | |
95 | void SetBachP(Double_t px, Double_t py, Double_t pz) { fBachP.SetXYZ(px, py, pz); } | |
96 | ||
97 | virtual const Text_t* GetName() const { return Form("ESDcascade_%i",fESDIndex); } | |
2991d609 | 98 | virtual const Text_t* GetTitle() const { return Form("ESDcascade_%i",fESDIndex); } |
99 | ||
100 | TEveTrackPropagator* GetPropagator() const { return fRnrStyle; } | |
101 | ||
9851a663 | 102 | AliEveTrack* GetBacTrack() const { return fBacTrack; } |
103 | AliEveTrack* GetNegTrack() const { return fNegTrack; } | |
104 | AliEveTrack* GetPosTrack() const { return fPosTrack; } | |
2991d609 | 105 | |
9851a663 | 106 | TEveLine* GetPointingCurve() const { return fPointingCurve; } |
107 | TEveLine* GetV0Path() const { return fV0Path; } | |
2991d609 | 108 | |
9851a663 | 109 | |
2991d609 | 110 | protected: |
9851a663 | 111 | TEveVector fRecBirthV; // Assumed birth point of cascade |
112 | TEveVector fRecDecayV; // Xi decay point : point of closest approach between the Xi daughters | |
113 | TEveVector fRecDecayP; // Reconstructed momentum of the cascade, at the Xi decay | |
114 | TEveVector fRecDecayV0; // Reconstructed birth point of neutral daughter | |
115 | ||
116 | ||
117 | AliEveTrack *fBacTrack; //! Eve track for the bachelor of the cascade | |
118 | AliEveTrack *fNegTrack; //! Eve track for the neg V0 dghter, within the cascade | |
119 | AliEveTrack *fPosTrack; //! Eve track for the pos V0 dghter, within the cascade | |
120 | ||
121 | TEveTrackPropagator *fRnrStyle; //! track propagator | |
122 | ||
123 | TEveLine *fPointingCurve; //! Curve meant model the Xi trajectory | |
124 | TEveLine *fV0Path; //! Line meant to model the V0 path of the cascade | |
125 | ||
126 | Int_t fESDIndex; // Index in ESD Cascade array. | |
127 | Float_t fDaughterDCA; // Distance at the point of closest approach, between both Xi daughters | |
128 | Float_t fChi2Cascade; // Some Chi-square. | |
129 | TVector3 fLambdaP; // Momentum of Lambda (V0 in cascade), at its decay point | |
130 | TVector3 fBachP; // Momentum of Bachelor, at the Xi decay point | |
2991d609 | 131 | |
132 | private: | |
133 | AliEveCascade(const AliEveCascade&); // Not implemented | |
134 | AliEveCascade& operator=(const AliEveCascade&); // Not implemented | |
135 | ||
9851a663 | 136 | ClassDef(AliEveCascade, 1); // Visual representation of a AliEveCascade. |
2991d609 | 137 | }; |
138 | ||
139 | ||
140 | /******************************************************************************/ | |
141 | // AliEveCascadeList | |
142 | /******************************************************************************/ | |
143 | ||
144 | class AliEveCascadeList : public TEveElementList | |
145 | { | |
146 | friend class AliEveCascadeListEditor; | |
147 | ||
148 | public: | |
149 | AliEveCascadeList(); | |
150 | AliEveCascadeList(TEveTrackPropagator* rs); | |
151 | AliEveCascadeList(const Text_t* name, TEveTrackPropagator* rs=0); | |
152 | virtual ~AliEveCascadeList() {} | |
153 | ||
154 | virtual const Text_t* GetTitle() const { return fTitle; } | |
155 | virtual void SetTitle(const Text_t* t) { fTitle = t; } | |
156 | virtual void SetTracksColor(Color_t cBac) { fBacColor = cBac;} | |
157 | ||
158 | virtual Bool_t CanEditMainColor() const { return kTRUE; } | |
159 | ||
9851a663 | 160 | void SetRnrStyle(TEveTrackPropagator* const rst ) { fRnrStyle = rst; } |
161 | TEveTrackPropagator* GetPropagator() const { return fRnrStyle; } | |
2991d609 | 162 | |
163 | Bool_t GetRnrCascadevtx() const { return fRnrCascadevtx; } | |
164 | Bool_t GetRnrCascadepath() const { return fRnrCascadepath; } | |
165 | Bool_t GetRnrDaughters() const { return fRnrDaughters; } | |
166 | ||
167 | void MakeCascades(); | |
168 | ||
9851a663 | 169 | void FilterByRadius (Float_t minR, Float_t maxR); |
170 | void FilterByDaughterDCA (Float_t minDaughterDCA, Float_t maxDaughterDCA); | |
171 | void FilterByPt (Float_t minPt, Float_t maxPt); | |
172 | void FilterByInvariantMass (Float_t minInvariantMass, Float_t maxInvariantMass, Int_t cascadePdgCodeHyp); | |
173 | ||
174 | ||
175 | void SetInvMassHyp (Int_t rInvMassHyp) {fInvMassHyp = rInvMassHyp;} | |
176 | Int_t GetInvMassHyp() const { return fInvMassHyp; } | |
2991d609 | 177 | |
178 | protected: | |
9851a663 | 179 | TString fTitle; // title |
2991d609 | 180 | |
9851a663 | 181 | TEveTrackPropagator *fRnrStyle; //! Rnr Style |
2991d609 | 182 | |
9851a663 | 183 | Bool_t fRnrDaughters; // Render state for the cascade daughters |
184 | Bool_t fRnrCascadevtx; // Render state for the cascade decay point | |
185 | Bool_t fRnrCascadepath; // Render state for the path between the prim. vertex and the "Xi" decay point | |
2991d609 | 186 | |
9851a663 | 187 | Color_t fBacColor; // Color of the bachelor track |
2991d609 | 188 | |
9851a663 | 189 | Float_t fMinRCut; // Min transv. radius allowed for cascade selection |
190 | Float_t fMaxRCut; // Max transv. radius allowed for cascade selection | |
2991d609 | 191 | |
9851a663 | 192 | Float_t fMinDaughterDCA; // Min DCA between Xi daughters, allowed for cascade selection |
193 | Float_t fMaxDaughterDCA; // Max DCA between Xi daughters, allowed for cascade selection | |
2991d609 | 194 | |
9851a663 | 195 | Float_t fMinPt; // Min pt allowed for cascade selection |
196 | Float_t fMaxPt; // Max pt allowed for cascade selection | |
197 | ||
198 | Int_t fInvMassHyp; // PdgCode of the inv. mass hypothesis for the cascade | |
199 | ||
200 | Float_t fMinInvariantMass; // Minimum invariant mass cut.for cascade | |
201 | Float_t fMaxInvariantMass; // Maximum invariant mass cut.for cascade | |
2991d609 | 202 | |
203 | private: | |
204 | void Init(); | |
205 | ||
206 | AliEveCascadeList(const AliEveCascadeList&); // Not implemented | |
207 | AliEveCascadeList& operator=(const AliEveCascadeList&); // Not implemented | |
208 | ||
209 | ClassDef(AliEveCascadeList, 0); // A list of AliEveCascade objecs. | |
210 | }; | |
211 | ||
212 | ||
213 | #endif |