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