]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveBase/AliEveKink.h
From Paraskevi Ganoti.
[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 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
13  * See cxx source for full Copyright notice                               
14 ***************************************************************************/
15
16 #include <TEveVSDStructs.h>
17 #include <TEveElement.h>
18 #include <TEveTrack.h>
19 #include <TEveTrackPropagator.h>
20
21 #include <TPolyMarker3D.h>
22 #include <TPolyLine3D.h>
23
24 #include <TPDGCode.h>
25
26 class TH1F;
27 class TH2F;
28
29 class AliEveKinkList;
30
31 class AliEveKink : public TEvePointSet
32 {
33   friend class AliEveKinkList;
34   friend class AliEveKinkEditor;
35
36 public:
37   AliEveKink();
38   AliEveKink(TEveRecTrack* tMoth, TEveRecTrack* tDaug, TEveRecKink* kink, TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh);
39   virtual ~AliEveKink();
40
41   void MakeKink();
42
43   virtual void SetMainColor(Color_t col)
44   {
45     TEvePointSet::SetMainColor(col);
46  
47   }
48
49   void SetRnrStyleMother(TEveTrackPropagator* rsMoth)  {fRnrStyleMoth=rsMoth;}
50   void SetRnrStyleDaughter(TEveTrackPropagator* rsDaugh)  {fRnrStyleDaugh=rsDaugh;}   
51   Double_t GetKinkAngle(Int_t i) const { return fKinkAngle[i]; }
52   void SetKinkAngle(Int_t i, Double_t anglekink) {fKinkAngle[i] = anglekink; }
53   
54   Float_t GetKinkRadius() const { return fRecKinkPosition.Perp(); }
55   
56   Float_t GetKinkPMother() const { return fMotherMomentum.Mag(); }
57   Float_t GetKinkPMotherPerp() const { return fMotherMomentum.Perp(); } 
58   Float_t GetKinkPDaughter() const { return fDaughterMomentum.Mag(); }
59   
60   Float_t GetInvMass(Int_t dPdgCode) const;
61   Float_t GetQt() const;
62   
63   void SetMaxProbPdgPid(Int_t rPdg, Float_t rPid);
64   Int_t   GetDaugMaxProbPdg() const { return fDaugMaxProbPdg; }
65   Float_t GetDaugMaxProbPid() const { return fDaugMaxProbPid; }
66
67   Int_t GetESDKinkIndex() const { return fESDKinkIndex; }
68   void  SetESDKinkIndex(Int_t ind) { fESDKinkIndex = ind;}
69
70   virtual const Text_t* GetName() const    { return Form("ESDkink_%i",fESDKinkIndex); }
71   virtual const Text_t* GetTitle() const   { return Form("ESDkink_%i",fESDKinkIndex); }
72
73   TEveTrack* GetMotherTrack() { return fMotherTrack; }
74   TEveTrack* GetDaughterTrack() { return fDaughterTrack; }
75
76 protected:
77   TEveVector       fRecKinkPosition;
78   TEveVector       fMotherMomentum;
79   TEveVector       fDaughterMomentum;
80
81   TEveTrack        *fMotherTrack;
82   TEveTrack        *fDaughterTrack;
83
84   TEveTrackPropagator  *fRnrStyleMoth;
85   TEveTrackPropagator  *fRnrStyleDaugh;
86   
87   Int_t             fESDKinkIndex;    // Index in ESD Kink array.
88   Double_t          fKinkAngle[3]; //
89   
90   Int_t             fDaugMaxProbPdg; // Maximum PDG probability for the daughter
91   Float_t           fDaugMaxProbPid; // Maximum PID probability for the daughter 
92
93 private:
94   AliEveKink(const AliEveKink&);            // Not implemented
95   AliEveKink& operator=(const AliEveKink&); // Not implemented
96
97   ClassDef(AliEveKink, 0); // Visual representation of a AliEveKink.
98 };
99
100
101 /******************************************************************************/
102 // AliEveKinkList
103 /******************************************************************************/
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
115   virtual const Text_t* GetTitle() const { return fTitle; }
116   virtual void SetTitle(const Text_t* t) { fTitle = t; }
117   virtual void SetTracksColor(Color_t cMoth, Color_t cDaug) {
118   fMothColor = cMoth; fDaugColor = cDaug;}
119
120   virtual Bool_t CanEditMainColor() const { return kTRUE; }
121
122   void  SetRnrStyleMoth(TEveTrackPropagator* rstMoth) { fRnrStyleMoth = rstMoth; }
123   TEveTrackPropagator* GetPropagatorMoth()        { return fRnrStyleMoth; }
124    
125   void  SetRnrStyleDaugh(TEveTrackPropagator* rstDaugh) { fRnrStyleDaugh = rstDaugh; }
126   TEveTrackPropagator* GetPropagatorDaugh()        { return fRnrStyleDaugh; }
127
128   Bool_t GetRnrKinkvtx()     const { return fRnrKinkvtx; }
129   Bool_t GetRnrKinkDaughter() const { return fRnrKinkDaughter; }   //not yet be sure about this!!!
130
131   void   MakeKinks();
132
133   void   FilterByRadius(Float_t minR, Float_t maxR);
134   void   FilterByKinkAngle(Float_t minKinkAngle, Float_t maxKinkAngle);
135   void   FilterByPt(Float_t minPt, Float_t maxPt);
136   void   FilterByInvariantMass(Float_t minPt, Float_t maxPt, Int_t dPdgCode);
137   
138   void   FilterByCheckedPidMinProb(Int_t rFlag, Int_t rPid, Float_t rProb);
139   void   SetDaugCheckedPid(Int_t rDaugCheckedPid) {fDaugCheckedPid = rDaugCheckedPid;}
140   Int_t  GetDaugCheckedPid() {return fDaugCheckedPid;}
141
142   void   SetDaugCheckedProb(Float_t rDaugCheckedProb) {fDaugCheckedProb = rDaugCheckedProb;}
143   Float_t  GetDaugCheckedProb() {return fDaugCheckedProb;}
144
145
146 protected:
147   TString              fTitle;
148
149   TEveTrackPropagator *fRnrStyleMoth;
150   TEveTrackPropagator *fRnrStyleDaugh; 
151
152   Bool_t               fRnrKinkDaughter;
153   Bool_t               fRnrKinkvtx;
154
155   Color_t              fMothColor;
156   Color_t              fDaugColor;
157
158   Float_t              fMinRCut;
159   Float_t              fMaxRCut;
160
161   Float_t              fMinKinkAngle;
162   Float_t              fMaxKinkAngle;
163
164   Float_t              fMinPt;
165   Float_t              fMaxPt;
166
167   Float_t              fMinInvariantMass;
168   Float_t              fMaxInvariantMass;
169   
170   Int_t                fDaugCheckedPid;
171   Float_t              fDaugCheckedProb;  
172
173 private:
174   void Init();
175
176   AliEveKinkList(const AliEveKinkList&);            // Not implemented
177   AliEveKinkList& operator=(const AliEveKinkList&); // Not implemented
178
179   ClassDef(AliEveKinkList, 0); // A list of AliEveKink objecs.
180 };
181
182
183 #endif