]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveKink.h
From Pawel Debski.
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveKink.h
CommitLineData
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 14class TEveTrack;
15class TEveTrackPropagator;
4711ad43 16
17class TH1F;
18class TH2F;
19
20class AliEveKinkList;
21
3e3a768d 22//------------------------------------------------------------------------------
23// AliEveKink
24//
25// Graphical representation of a kink.
26//------------------------------------------------------------------------------
27
4711ad43 28class AliEveKink : public TEvePointSet
29{
30 friend class AliEveKinkList;
31 friend class AliEveKinkEditor;
32
33public:
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
72protected:
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
89private:
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
105class AliEveKinkList : public TEveElementList
106{
107 friend class AliEveKinkListEditor;
108
109public:
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
144protected:
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
169private:
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