]>
Commit | Line | Data |
---|---|---|
4711ad43 | 1 | // $Id$ |
2 | // Main authors: Paraskevi Ganoti: 2009 | |
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 AliEveKink_H | |
10 | #define AliEveKink_H | |
11 | ||
3e3a768d | 12 | #include <TEvePointSet.h> |
4711ad43 | 13 | |
3e3a768d | 14 | class TEveTrack; |
15 | class TEveTrackPropagator; | |
4711ad43 | 16 | |
17 | class TH1F; | |
18 | class TH2F; | |
19 | ||
20 | class AliEveKinkList; | |
21 | ||
3e3a768d | 22 | //------------------------------------------------------------------------------ |
23 | // AliEveKink | |
24 | // | |
25 | // Graphical representation of a kink. | |
26 | //------------------------------------------------------------------------------ | |
27 | ||
4711ad43 | 28 | class AliEveKink : public TEvePointSet |
29 | { | |
30 | friend class AliEveKinkList; | |
31 | friend class AliEveKinkEditor; | |
32 | ||
33 | public: | |
34 | AliEveKink(); | |
35 | AliEveKink(TEveRecTrack* tMoth, TEveRecTrack* tDaug, TEveRecKink* kink, TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh); | |
36 | virtual ~AliEveKink(); | |
37 | ||
38 | void MakeKink(); | |
39 | ||
40 | virtual void SetMainColor(Color_t col) | |
41 | { | |
42 | TEvePointSet::SetMainColor(col); | |
4711ad43 | 43 | } |
44 | ||
3e3a768d | 45 | void SetRnrStyleMother(TEveTrackPropagator* rsMoth) { fRnrStyleMoth = rsMoth; } |
46 | void SetRnrStyleDaughter(TEveTrackPropagator* rsDaugh) { fRnrStyleDaugh = rsDaugh; } | |
4711ad43 | 47 | Double_t GetKinkAngle(Int_t i) const { return fKinkAngle[i]; } |
3e3a768d | 48 | void SetKinkAngle(Int_t i, Double_t anglekink) { fKinkAngle[i] = anglekink; } |
49 | ||
4711ad43 | 50 | Float_t GetKinkRadius() const { return fRecKinkPosition.Perp(); } |
3e3a768d | 51 | |
52 | Float_t GetKinkPMother() const { return fMotherMomentum.Mag(); } | |
53 | Float_t GetKinkPMotherPerp() const { return fMotherMomentum.Perp(); } | |
54 | Float_t GetKinkPDaughter() const { return fDaughterMomentum.Mag(); } | |
55 | ||
4711ad43 | 56 | Float_t GetInvMass(Int_t dPdgCode) const; |
57 | Float_t GetQt() const; | |
3e3a768d | 58 | |
4711ad43 | 59 | void SetMaxProbPdgPid(Int_t rPdg, Float_t rPid); |
60 | Int_t GetDaugMaxProbPdg() const { return fDaugMaxProbPdg; } | |
61 | Float_t GetDaugMaxProbPid() const { return fDaugMaxProbPid; } | |
62 | ||
63 | Int_t GetESDKinkIndex() const { return fESDKinkIndex; } | |
64 | void SetESDKinkIndex(Int_t ind) { fESDKinkIndex = ind;} | |
65 | ||
3e3a768d | 66 | virtual const Text_t* GetName() const { return Form("ESDkink_%i",fESDKinkIndex); } |
67 | virtual const Text_t* GetTitle() const { return Form("ESDkink_%i",fESDKinkIndex); } | |
4711ad43 | 68 | |
3e3a768d | 69 | TEveTrack* GetMotherTrack() const { return fMotherTrack; } |
70 | TEveTrack* GetDaughterTrack() const { return fDaughterTrack; } | |
4711ad43 | 71 | |
72 | protected: | |
3e3a768d | 73 | TEveVector fRecKinkPosition; // Reconstructed position of kink. |
74 | TEveVector fMotherMomentum; // Momentum of mother track. | |
75 | TEveVector fDaughterMomentum; // Momentum of daugter track. | |
76 | ||
77 | TEveTrack *fMotherTrack; // Graphical representation of mother track. | |
78 | TEveTrack *fDaughterTrack; // Graphical representation of daughter track. | |
4711ad43 | 79 | |
3e3a768d | 80 | TEveTrackPropagator *fRnrStyleMoth; // Track-propagator for mother track. |
81 | TEveTrackPropagator *fRnrStyleDaugh; // Track-propagator for daughter track. | |
4711ad43 | 82 | |
4711ad43 | 83 | Int_t fESDKinkIndex; // Index in ESD Kink array. |
3e3a768d | 84 | Double_t fKinkAngle[3]; // TODO |
85 | ||
86 | Int_t fDaugMaxProbPdg; // Maximum PDG probability for the daughter | |
87 | Float_t fDaugMaxProbPid; // Maximum PID probability for the daughter | |
4711ad43 | 88 | |
89 | private: | |
90 | AliEveKink(const AliEveKink&); // Not implemented | |
91 | AliEveKink& operator=(const AliEveKink&); // Not implemented | |
92 | ||
93 | ClassDef(AliEveKink, 0); // Visual representation of a AliEveKink. | |
94 | }; | |
95 | ||
96 | ||
3e3a768d | 97 | //------------------------------------------------------------------------------ |
4711ad43 | 98 | // AliEveKinkList |
3e3a768d | 99 | // |
100 | // Container for AliEveKink objects | |
101 | // Provides managmenet methods for setting cuts and common visualization | |
102 | // parameters. | |
103 | //------------------------------------------------------------------------------ | |
4711ad43 | 104 | |
105 | class AliEveKinkList : public TEveElementList | |
106 | { | |
107 | friend class AliEveKinkListEditor; | |
108 | ||
109 | public: | |
110 | AliEveKinkList(); | |
111 | AliEveKinkList(TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh); | |
112 | AliEveKinkList(const Text_t* name, TEveTrackPropagator* rsMoth=0, TEveTrackPropagator* rsDaugh=0); | |
113 | virtual ~AliEveKinkList() {} | |
114 | ||
3e3a768d | 115 | virtual void SetTracksColor(Color_t cMoth, Color_t cDaug) |
116 | { fMothColor = cMoth; fDaugColor = cDaug; } | |
4711ad43 | 117 | |
118 | virtual Bool_t CanEditMainColor() const { return kTRUE; } | |
119 | ||
120 | void SetRnrStyleMoth(TEveTrackPropagator* rstMoth) { fRnrStyleMoth = rstMoth; } | |
3e3a768d | 121 | TEveTrackPropagator* GetPropagatorMoth() const { return fRnrStyleMoth; } |
122 | ||
4711ad43 | 123 | void SetRnrStyleDaugh(TEveTrackPropagator* rstDaugh) { fRnrStyleDaugh = rstDaugh; } |
3e3a768d | 124 | TEveTrackPropagator* GetPropagatorDaugh() const { return fRnrStyleDaugh; } |
4711ad43 | 125 | |
3e3a768d | 126 | Bool_t GetRnrKinkvtx() const { return fRnrKinkvtx; } |
4711ad43 | 127 | Bool_t GetRnrKinkDaughter() const { return fRnrKinkDaughter; } //not yet be sure about this!!! |
128 | ||
129 | void MakeKinks(); | |
130 | ||
131 | void FilterByRadius(Float_t minR, Float_t maxR); | |
132 | void FilterByKinkAngle(Float_t minKinkAngle, Float_t maxKinkAngle); | |
133 | void FilterByPt(Float_t minPt, Float_t maxPt); | |
134 | void FilterByInvariantMass(Float_t minPt, Float_t maxPt, Int_t dPdgCode); | |
3e3a768d | 135 | |
4711ad43 | 136 | void FilterByCheckedPidMinProb(Int_t rFlag, Int_t rPid, Float_t rProb); |
3e3a768d | 137 | void SetDaugCheckedPid(Int_t dcpid) { fDaugCheckedPid = dcpid; } |
138 | Int_t GetDaugCheckedPid() const { return fDaugCheckedPid; } | |
4711ad43 | 139 | |
3e3a768d | 140 | void SetDaugCheckedProb(Float_t dcprob) { fDaugCheckedProb = dcprob; } |
141 | Float_t GetDaugCheckedProb() const { return fDaugCheckedProb; } | |
4711ad43 | 142 | |
143 | ||
144 | protected: | |
3e3a768d | 145 | TEveTrackPropagator *fRnrStyleMoth; // Default track-propagator for mother tracks. |
146 | TEveTrackPropagator *fRnrStyleDaugh; // Default track-propagator for daughter tracks. | |
4711ad43 | 147 | |
3e3a768d | 148 | Bool_t fRnrKinkDaughter; // Flag - show daughter tracks. |
149 | Bool_t fRnrKinkvtx; // Flag - show kink vertex. | |
4711ad43 | 150 | |
3e3a768d | 151 | Color_t fMothColor; // Color of mother tracks. |
152 | Color_t fDaugColor; // Color of daughter tracks. | |
4711ad43 | 153 | |
3e3a768d | 154 | Float_t fMinRCut; // Cut - minimum kink radius. |
155 | Float_t fMaxRCut; // Cut - maximum kink radius. | |
4711ad43 | 156 | |
3e3a768d | 157 | Float_t fMinKinkAngle; // Cut - minimum kink angle. |
158 | Float_t fMaxKinkAngle; // Cut - maximum kink angle. | |
4711ad43 | 159 | |
3e3a768d | 160 | Float_t fMinPt; // Cut - minimum pT of mother track. |
161 | Float_t fMaxPt; // Cut - maximum pT of mother track. | |
4711ad43 | 162 | |
3e3a768d | 163 | Float_t fMinInvariantMass; // Cut - minimum invariant mass. |
164 | Float_t fMaxInvariantMass; // Cut - maximum invariant mass. | |
4711ad43 | 165 | |
3e3a768d | 166 | Int_t fDaugCheckedPid; // Cut - PID of daughter track. |
167 | Float_t fDaugCheckedProb; // Cut - min PID probability of the daughter track. | |
4711ad43 | 168 | |
169 | private: | |
170 | void Init(); | |
171 | ||
172 | AliEveKinkList(const AliEveKinkList&); // Not implemented | |
173 | AliEveKinkList& operator=(const AliEveKinkList&); // Not implemented | |
174 | ||
175 | ClassDef(AliEveKinkList, 0); // A list of AliEveKink objecs. | |
176 | }; | |
177 | ||
178 | ||
179 | #endif |