Remove parenthesis around throw arguments.
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveCascade.h
CommitLineData
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
23class TH1F;
24class TH2F;
25class TVector3;
26
27class TEveVSDStructs;
28class TEveTrackPropagator;
29class TEveLine;
30class TEveVector;
2991d609 31
32#include <TEveVSDStructs.h>
9851a663 33#include <TEvePointSet.h>
34#include <TPDGCode.h>
2991d609 35
9851a663 36
0e33c639 37class AliEveCascadeList;
2991d609 38
9851a663 39#include "AliEveTrack.h"
40
2991d609 41
9851a663 42
2991d609 43class AliEveCascade : public TEvePointSet
44{
45 friend class AliEveCascadeList;
9851a663 46 friend class AliEveCascadeEditor;
2991d609 47
48public:
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 110protected:
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
132private:
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
144class AliEveCascadeList : public TEveElementList
145{
146 friend class AliEveCascadeListEditor;
147
148public:
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
178protected:
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
203private:
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