2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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
12 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
13 * See cxx source for full Copyright notice */
16 //----------------------------------------------------------------------------
17 // This code defines the reconstructed cascade (ESD level) visualized with EVE
19 // Origin : Boris Hippolyte, IPHC (hippolyt@in2p3.fr)
20 // Modified : Antonin Maire, April 2009, IPHC (antonin.maire@cern.ch)
21 //----------------------------------------------------------------------------
28 class TEveTrackPropagator;
32 #include <TEveVSDStructs.h>
33 #include <TEvePointSet.h>
37 class AliEveCascadeList;
39 #include "AliEveTrack.h"
43 class AliEveCascade : public TEvePointSet
45 friend class AliEveCascadeList;
46 friend class AliEveCascadeEditor;
50 AliEveCascade(TEveRecTrack* tBac,
54 TEveRecCascade* cascade,
55 TEveTrackPropagator* rs);
56 virtual ~AliEveCascade();
60 virtual void SetMainColor(Color_t col)
62 TEvePointSet::SetMainColor(col);
63 fPointingCurve->SetLineColor(fMarkerColor);
64 fV0Path->SetLineColor(fMarkerColor);
67 void SetRnrStyle( TEveTrackPropagator* const rs) { fRnrStyle = rs; }
69 Float_t GetDaughterDCA() const { return fDaughterDCA; }
70 void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; }
72 Float_t GetRadius() const { return fRecDecayV.Perp(); }
73 Float_t GetPt() const { return fRecDecayP.Perp(); }
74 Float_t GetPtot() const { return fRecDecayP.Mag(); }
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(); }
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); }
88 Int_t GetESDIndex() const { return fESDIndex; }
89 void SetESDIndex(Int_t ind) { fESDIndex = ind;}
91 TVector3 GetLambdaP() const { return fLambdaP; }
92 void SetLambdaP(Double_t px, Double_t py, Double_t pz) { fLambdaP.SetXYZ(px, py, pz); }
94 TVector3 GetBachP() const { return fBachP; }
95 void SetBachP(Double_t px, Double_t py, Double_t pz) { fBachP.SetXYZ(px, py, pz); }
97 virtual const Text_t* GetName() const { return Form("ESDcascade_%i",fESDIndex); }
98 virtual const Text_t* GetTitle() const { return Form("ESDcascade_%i",fESDIndex); }
100 TEveTrackPropagator* GetPropagator() const { return fRnrStyle; }
102 AliEveTrack* GetBacTrack() const { return fBacTrack; }
103 AliEveTrack* GetNegTrack() const { return fNegTrack; }
104 AliEveTrack* GetPosTrack() const { return fPosTrack; }
106 TEveLine* GetPointingCurve() const { return fPointingCurve; }
107 TEveLine* GetV0Path() const { return fV0Path; }
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
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
121 TEveTrackPropagator *fRnrStyle; //! track propagator
123 TEveLine *fPointingCurve; //! Curve meant model the Xi trajectory
124 TEveLine *fV0Path; //! Line meant to model the V0 path of the cascade
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
133 AliEveCascade(const AliEveCascade&); // Not implemented
134 AliEveCascade& operator=(const AliEveCascade&); // Not implemented
136 ClassDef(AliEveCascade, 1); // Visual representation of a AliEveCascade.
140 /******************************************************************************/
142 /******************************************************************************/
144 class AliEveCascadeList : public TEveElementList
146 friend class AliEveCascadeListEditor;
150 AliEveCascadeList(TEveTrackPropagator* rs);
151 AliEveCascadeList(const Text_t* name, TEveTrackPropagator* rs=0);
152 virtual ~AliEveCascadeList() {}
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;}
158 virtual Bool_t CanEditMainColor() const { return kTRUE; }
160 void SetRnrStyle(TEveTrackPropagator* const rst ) { fRnrStyle = rst; }
161 TEveTrackPropagator* GetPropagator() const { return fRnrStyle; }
163 Bool_t GetRnrCascadevtx() const { return fRnrCascadevtx; }
164 Bool_t GetRnrCascadepath() const { return fRnrCascadepath; }
165 Bool_t GetRnrDaughters() const { return fRnrDaughters; }
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);
175 void SetInvMassHyp (Int_t rInvMassHyp) {fInvMassHyp = rInvMassHyp;}
176 Int_t GetInvMassHyp() const { return fInvMassHyp; }
179 TString fTitle; // title
181 TEveTrackPropagator *fRnrStyle; //! Rnr Style
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
187 Color_t fBacColor; // Color of the bachelor track
189 Float_t fMinRCut; // Min transv. radius allowed for cascade selection
190 Float_t fMaxRCut; // Max transv. radius allowed for cascade selection
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
195 Float_t fMinPt; // Min pt allowed for cascade selection
196 Float_t fMaxPt; // Max pt allowed for cascade selection
198 Int_t fInvMassHyp; // PdgCode of the inv. mass hypothesis for the cascade
200 Float_t fMinInvariantMass; // Minimum invariant mass cut.for cascade
201 Float_t fMaxInvariantMass; // Maximum invariant mass cut.for cascade
206 AliEveCascadeList(const AliEveCascadeList&); // Not implemented
207 AliEveCascadeList& operator=(const AliEveCascadeList&); // Not implemented
209 ClassDef(AliEveCascadeList, 0); // A list of AliEveCascade objecs.