2 // Main authors: Paraskevi Ganoti: 2009
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 **************************************************************************/
12 #include <TEvePointSet.h>
13 #include <TEveVSDStructs.h>
16 class TEveTrackPropagator;
23 //------------------------------------------------------------------------------
26 // Graphical representation of a kink.
27 //------------------------------------------------------------------------------
29 class AliEveKink : public TEvePointSet
31 friend class AliEveKinkList;
32 friend class AliEveKinkEditor;
36 AliEveKink(TEveRecTrack* tMoth, TEveRecTrack* tDaug, TEveRecKink* kink, TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh);
37 virtual ~AliEveKink();
41 virtual void SetMainColor(Color_t col)
43 TEvePointSet::SetMainColor(col);
46 void SetRnrStyleMother(TEveTrackPropagator* rsMoth) { fRnrStyleMoth = rsMoth; }
47 void SetRnrStyleDaughter(TEveTrackPropagator* rsDaugh) { fRnrStyleDaugh = rsDaugh; }
48 Double_t GetKinkAngle(Int_t i) const { return fKinkAngle[i]; }
49 void SetKinkAngle(Int_t i, Double_t anglekink) { fKinkAngle[i] = anglekink; }
51 Float_t GetKinkRadius() const { return fRecKinkPosition.Perp(); }
53 Float_t GetKinkPMother() const { return fMotherMomentum.Mag(); }
54 Float_t GetKinkPMotherPerp() const { return fMotherMomentum.Perp(); }
55 Float_t GetKinkPDaughter() const { return fDaughterMomentum.Mag(); }
57 Float_t GetInvMass(Int_t dPdgCode) const;
58 Float_t GetQt() const;
60 void SetMaxProbPdgPid(Int_t rPdg, Float_t rPid);
61 Int_t GetDaugMaxProbPdg() const { return fDaugMaxProbPdg; }
62 Float_t GetDaugMaxProbPid() const { return fDaugMaxProbPid; }
64 Int_t GetESDKinkIndex() const { return fESDKinkIndex; }
65 void SetESDKinkIndex(Int_t ind) { fESDKinkIndex = ind;}
67 virtual const Text_t* GetName() const { return Form("ESDkink_%i",fESDKinkIndex); }
68 virtual const Text_t* GetTitle() const { return Form("ESDkink_%i",fESDKinkIndex); }
70 TEveTrack* GetMotherTrack() const { return fMotherTrack; }
71 TEveTrack* GetDaughterTrack() const { return fDaughterTrack; }
74 TEveVector fRecKinkPosition; // Reconstructed position of kink.
75 TEveVector fMotherMomentum; // Momentum of mother track.
76 TEveVector fDaughterMomentum; // Momentum of daugter track.
78 TEveTrack *fMotherTrack; // Graphical representation of mother track.
79 TEveTrack *fDaughterTrack; // Graphical representation of daughter track.
81 TEveTrackPropagator *fRnrStyleMoth; // Track-propagator for mother track.
82 TEveTrackPropagator *fRnrStyleDaugh; // Track-propagator for daughter track.
84 Int_t fESDKinkIndex; // Index in ESD Kink array.
85 Double_t fKinkAngle[3]; // TODO
87 Int_t fDaugMaxProbPdg; // Maximum PDG probability for the daughter
88 Float_t fDaugMaxProbPid; // Maximum PID probability for the daughter
91 AliEveKink(const AliEveKink&); // Not implemented
92 AliEveKink& operator=(const AliEveKink&); // Not implemented
94 ClassDef(AliEveKink, 0); // Visual representation of a AliEveKink.
98 //------------------------------------------------------------------------------
101 // Container for AliEveKink objects
102 // Provides managmenet methods for setting cuts and common visualization
104 //------------------------------------------------------------------------------
106 class AliEveKinkList : public TEveElementList
108 friend class AliEveKinkListEditor;
112 AliEveKinkList(TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh);
113 AliEveKinkList(const Text_t* name, TEveTrackPropagator* rsMoth=0, TEveTrackPropagator* rsDaugh=0);
114 virtual ~AliEveKinkList() {}
116 virtual void SetTracksColor(Color_t cMoth, Color_t cDaug)
117 { fMothColor = cMoth; fDaugColor = cDaug; }
119 virtual Bool_t CanEditMainColor() const { return kTRUE; }
121 void SetRnrStyleMoth(TEveTrackPropagator* rstMoth) { fRnrStyleMoth = rstMoth; }
122 TEveTrackPropagator* GetPropagatorMoth() const { return fRnrStyleMoth; }
124 void SetRnrStyleDaugh(TEveTrackPropagator* rstDaugh) { fRnrStyleDaugh = rstDaugh; }
125 TEveTrackPropagator* GetPropagatorDaugh() const { return fRnrStyleDaugh; }
127 Bool_t GetRnrKinkvtx() const { return fRnrKinkvtx; }
128 Bool_t GetRnrKinkDaughter() const { return fRnrKinkDaughter; } //not yet be sure about this!!!
132 void FilterByRadius(Float_t minR, Float_t maxR);
133 void FilterByKinkAngle(Float_t minKinkAngle, Float_t maxKinkAngle);
134 void FilterByPt(Float_t minPt, Float_t maxPt);
135 void FilterByInvariantMass(Float_t minPt, Float_t maxPt, Int_t dPdgCode);
137 void FilterByCheckedPidMinProb(Int_t rFlag, Int_t rPid, Float_t rProb);
138 void SetDaugCheckedPid(Int_t dcpid) { fDaugCheckedPid = dcpid; }
139 Int_t GetDaugCheckedPid() const { return fDaugCheckedPid; }
141 void SetDaugCheckedProb(Float_t dcprob) { fDaugCheckedProb = dcprob; }
142 Float_t GetDaugCheckedProb() const { return fDaugCheckedProb; }
146 TEveTrackPropagator *fRnrStyleMoth; // Default track-propagator for mother tracks.
147 TEveTrackPropagator *fRnrStyleDaugh; // Default track-propagator for daughter tracks.
149 Bool_t fRnrKinkDaughter; // Flag - show daughter tracks.
150 Bool_t fRnrKinkvtx; // Flag - show kink vertex.
152 Color_t fMothColor; // Color of mother tracks.
153 Color_t fDaugColor; // Color of daughter tracks.
155 Float_t fMinRCut; // Cut - minimum kink radius.
156 Float_t fMaxRCut; // Cut - maximum kink radius.
158 Float_t fMinKinkAngle; // Cut - minimum kink angle.
159 Float_t fMaxKinkAngle; // Cut - maximum kink angle.
161 Float_t fMinPt; // Cut - minimum pT of mother track.
162 Float_t fMaxPt; // Cut - maximum pT of mother track.
164 Float_t fMinInvariantMass; // Cut - minimum invariant mass.
165 Float_t fMaxInvariantMass; // Cut - maximum invariant mass.
167 Int_t fDaugCheckedPid; // Cut - PID of daughter track.
168 Float_t fDaugCheckedProb; // Cut - min PID probability of the daughter track.
173 AliEveKinkList(const AliEveKinkList&); // Not implemented
174 AliEveKinkList& operator=(const AliEveKinkList&); // Not implemented
176 ClassDef(AliEveKinkList, 0); // A list of AliEveKink objecs.