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;
31 #include <TEveVector.h>
32 #include <TEveVSDStructs.h>
33 #include <TEvePointSet.h>
37 class AliEveCascadeList;
39 #include "AliEveTrack.h"
42 class AliEveCascade : public TEvePointSet
44 friend class AliEveCascadeList;
45 friend class AliEveCascadeEditor;
49 AliEveCascade(TEveRecTrack* tBac,
53 TEveRecCascade* cascade,
54 TEveTrackPropagator* rs);
55 virtual ~AliEveCascade();
59 virtual void SetMainColor(Color_t col)
61 TEvePointSet::SetMainColor(col);
62 fPointingCurve->SetLineColor(fMarkerColor);
63 fV0Path->SetLineColor(fMarkerColor);
66 void SetRnrStyle( TEveTrackPropagator* const rs) { fRnrStyle = rs; }
68 Float_t GetDaughterDCA() const { return fDaughterDCA; }
69 void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; }
71 Float_t GetRadius() const { return fRecDecayV.Perp(); }
72 Float_t GetPt() const { return fRecDecayP.Perp(); }
73 Float_t GetPtot() const { return fRecDecayP.Mag(); }
75 Float_t GetPhi() const { return fRecDecayP.Phi(); }
76 Float_t GetTheta() const { return fRecDecayP.Theta(); }
77 Float_t GetEta() const { return fRecDecayP.Eta(); }
78 Int_t GetCharge() const { return fBacTrack->GetCharge(); }
80 Double_t GetInvMass(Int_t cascadePdgCodeHyp) const;
81 Float_t GetXiMinusInvMass() const { return GetInvMass( kXiMinus); }
82 Float_t GetOmegaMinusInvMass() const { return GetInvMass( kOmegaMinus); }
83 Float_t GetXiPlusInvMass() const { return GetInvMass(-kXiMinus); }
84 Float_t GetOmegaPlusInvMass() const { return GetInvMass(-kOmegaMinus); }
87 Int_t GetESDIndex() const { return fESDIndex; }
88 void SetESDIndex(Int_t ind) { fESDIndex = ind;}
90 TVector3 GetLambdaP() const { return fLambdaP; }
91 void SetLambdaP(Double_t px, Double_t py, Double_t pz) { fLambdaP.SetXYZ(px, py, pz); }
93 TVector3 GetBachP() const { return fBachP; }
94 void SetBachP(Double_t px, Double_t py, Double_t pz) { fBachP.SetXYZ(px, py, pz); }
96 virtual const Text_t* GetName() const { return Form("ESDcascade_%i",fESDIndex); }
97 virtual const Text_t* GetTitle() const { return Form("ESDcascade_%i",fESDIndex); }
99 TEveTrackPropagator* GetPropagator() const { return fRnrStyle; }
101 AliEveTrack* GetBacTrack() const { return fBacTrack; }
102 AliEveTrack* GetNegTrack() const { return fNegTrack; }
103 AliEveTrack* GetPosTrack() const { return fPosTrack; }
105 TEveLine* GetPointingCurve() const { return fPointingCurve; }
106 TEveLine* GetV0Path() const { return fV0Path; }
110 TEveVector fRecBirthV; // Assumed birth point of cascade
111 TEveVector fRecDecayV; // Xi decay point : point of closest approach between the Xi daughters
112 TEveVector fRecDecayP; // Reconstructed momentum of the cascade, at the Xi decay
113 TEveVector fRecDecayV0; // Reconstructed birth point of neutral daughter
116 AliEveTrack *fBacTrack; //! Eve track for the bachelor of the cascade
117 AliEveTrack *fNegTrack; //! Eve track for the neg V0 dghter, within the cascade
118 AliEveTrack *fPosTrack; //! Eve track for the pos V0 dghter, within the cascade
120 TEveTrackPropagator *fRnrStyle; //! track propagator
122 TEveLine *fPointingCurve; //! Curve meant model the Xi trajectory
123 TEveLine *fV0Path; //! Line meant to model the V0 path of the cascade
125 Int_t fESDIndex; // Index in ESD Cascade array.
126 Float_t fDaughterDCA; // Distance at the point of closest approach, between both Xi daughters
127 Float_t fChi2Cascade; // Some Chi-square.
128 TVector3 fLambdaP; // Momentum of Lambda (V0 in cascade), at its decay point
129 TVector3 fBachP; // Momentum of Bachelor, at the Xi decay point
132 AliEveCascade(const AliEveCascade&); // Not implemented
133 AliEveCascade& operator=(const AliEveCascade&); // Not implemented
135 ClassDef(AliEveCascade, 1); // Visual representation of a AliEveCascade.
139 /******************************************************************************/
141 /******************************************************************************/
143 class AliEveCascadeList : public TEveElementList
145 friend class AliEveCascadeListEditor;
149 AliEveCascadeList(TEveTrackPropagator* rs);
150 AliEveCascadeList(const Text_t* name, TEveTrackPropagator* rs=0);
151 virtual ~AliEveCascadeList() {}
153 virtual const Text_t* GetTitle() const { return fTitle; }
154 virtual void SetTitle(const Text_t* t) { fTitle = t; }
155 virtual void SetTracksColor(Color_t cBac) { fBacColor = cBac;}
157 virtual Bool_t CanEditMainColor() const { return kTRUE; }
159 void SetRnrStyle(TEveTrackPropagator* const rst ) { fRnrStyle = rst; }
160 TEveTrackPropagator* GetPropagator() const { return fRnrStyle; }
162 Bool_t GetRnrCascadevtx() const { return fRnrCascadevtx; }
163 Bool_t GetRnrCascadepath() const { return fRnrCascadepath; }
164 Bool_t GetRnrDaughters() const { return fRnrDaughters; }
168 void FilterByRadius (Float_t minR, Float_t maxR);
169 void FilterByDaughterDCA (Float_t minDaughterDCA, Float_t maxDaughterDCA);
170 void FilterByPt (Float_t minPt, Float_t maxPt);
171 void FilterByInvariantMass (Float_t minInvariantMass, Float_t maxInvariantMass, Int_t cascadePdgCodeHyp);
174 void SetInvMassHyp (Int_t rInvMassHyp) {fInvMassHyp = rInvMassHyp;}
175 Int_t GetInvMassHyp() const { return fInvMassHyp; }
178 TString fTitle; // title
180 TEveTrackPropagator *fRnrStyle; //! Rnr Style
182 Bool_t fRnrDaughters; // Render state for the cascade daughters
183 Bool_t fRnrCascadevtx; // Render state for the cascade decay point
184 Bool_t fRnrCascadepath; // Render state for the path between the prim. vertex and the "Xi" decay point
186 Color_t fBacColor; // Color of the bachelor track
188 Float_t fMinRCut; // Min transv. radius allowed for cascade selection
189 Float_t fMaxRCut; // Max transv. radius allowed for cascade selection
191 Float_t fMinDaughterDCA; // Min DCA between Xi daughters, allowed for cascade selection
192 Float_t fMaxDaughterDCA; // Max DCA between Xi daughters, allowed for cascade selection
194 Float_t fMinPt; // Min pt allowed for cascade selection
195 Float_t fMaxPt; // Max pt allowed for cascade selection
197 Int_t fInvMassHyp; // PdgCode of the inv. mass hypothesis for the cascade
199 Float_t fMinInvariantMass; // Minimum invariant mass cut.for cascade
200 Float_t fMaxInvariantMass; // Maximum invariant mass cut.for cascade
205 AliEveCascadeList(const AliEveCascadeList&); // Not implemented
206 AliEveCascadeList& operator=(const AliEveCascadeList&); // Not implemented
208 ClassDef(AliEveCascadeList, 0); // A list of AliEveCascade objecs.