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 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
13 * See cxx source for full Copyright notice
14 ***************************************************************************/
16 #include <TEveVSDStructs.h>
17 #include <TEveElement.h>
18 #include <TEveTrack.h>
19 #include <TEveTrackPropagator.h>
21 #include <TPolyMarker3D.h>
22 #include <TPolyLine3D.h>
31 class AliEveKink : public TEvePointSet
33 friend class AliEveKinkList;
34 friend class AliEveKinkEditor;
38 AliEveKink(TEveRecTrack* tMoth, TEveRecTrack* tDaug, TEveRecKink* kink, TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh);
39 virtual ~AliEveKink();
43 virtual void SetMainColor(Color_t col)
45 TEvePointSet::SetMainColor(col);
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; }
54 Float_t GetKinkRadius() const { return fRecKinkPosition.Perp(); }
56 Float_t GetKinkPMother() const { return fMotherMomentum.Mag(); }
57 Float_t GetKinkPMotherPerp() const { return fMotherMomentum.Perp(); }
58 Float_t GetKinkPDaughter() const { return fDaughterMomentum.Mag(); }
60 Float_t GetInvMass(Int_t dPdgCode) const;
61 Float_t GetQt() const;
63 void SetMaxProbPdgPid(Int_t rPdg, Float_t rPid);
64 Int_t GetDaugMaxProbPdg() const { return fDaugMaxProbPdg; }
65 Float_t GetDaugMaxProbPid() const { return fDaugMaxProbPid; }
67 Int_t GetESDKinkIndex() const { return fESDKinkIndex; }
68 void SetESDKinkIndex(Int_t ind) { fESDKinkIndex = ind;}
70 virtual const Text_t* GetName() const { return Form("ESDkink_%i",fESDKinkIndex); }
71 virtual const Text_t* GetTitle() const { return Form("ESDkink_%i",fESDKinkIndex); }
73 TEveTrack* GetMotherTrack() { return fMotherTrack; }
74 TEveTrack* GetDaughterTrack() { return fDaughterTrack; }
77 TEveVector fRecKinkPosition;
78 TEveVector fMotherMomentum;
79 TEveVector fDaughterMomentum;
81 TEveTrack *fMotherTrack;
82 TEveTrack *fDaughterTrack;
84 TEveTrackPropagator *fRnrStyleMoth;
85 TEveTrackPropagator *fRnrStyleDaugh;
87 Int_t fESDKinkIndex; // Index in ESD Kink array.
88 Double_t fKinkAngle[3]; //
90 Int_t fDaugMaxProbPdg; // Maximum PDG probability for the daughter
91 Float_t fDaugMaxProbPid; // Maximum PID probability for the daughter
94 AliEveKink(const AliEveKink&); // Not implemented
95 AliEveKink& operator=(const AliEveKink&); // Not implemented
97 ClassDef(AliEveKink, 0); // Visual representation of a AliEveKink.
101 /******************************************************************************/
103 /******************************************************************************/
105 class AliEveKinkList : public TEveElementList
107 friend class AliEveKinkListEditor;
111 AliEveKinkList(TEveTrackPropagator* rsMoth, TEveTrackPropagator* rsDaugh);
112 AliEveKinkList(const Text_t* name, TEveTrackPropagator* rsMoth=0, TEveTrackPropagator* rsDaugh=0);
113 virtual ~AliEveKinkList() {}
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;}
120 virtual Bool_t CanEditMainColor() const { return kTRUE; }
122 void SetRnrStyleMoth(TEveTrackPropagator* rstMoth) { fRnrStyleMoth = rstMoth; }
123 TEveTrackPropagator* GetPropagatorMoth() { return fRnrStyleMoth; }
125 void SetRnrStyleDaugh(TEveTrackPropagator* rstDaugh) { fRnrStyleDaugh = rstDaugh; }
126 TEveTrackPropagator* GetPropagatorDaugh() { return fRnrStyleDaugh; }
128 Bool_t GetRnrKinkvtx() const { return fRnrKinkvtx; }
129 Bool_t GetRnrKinkDaughter() const { return fRnrKinkDaughter; } //not yet be sure about this!!!
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);
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;}
142 void SetDaugCheckedProb(Float_t rDaugCheckedProb) {fDaugCheckedProb = rDaugCheckedProb;}
143 Float_t GetDaugCheckedProb() {return fDaugCheckedProb;}
149 TEveTrackPropagator *fRnrStyleMoth;
150 TEveTrackPropagator *fRnrStyleDaugh;
152 Bool_t fRnrKinkDaughter;
161 Float_t fMinKinkAngle;
162 Float_t fMaxKinkAngle;
167 Float_t fMinInvariantMass;
168 Float_t fMaxInvariantMass;
170 Int_t fDaugCheckedPid;
171 Float_t fDaugCheckedProb;
176 AliEveKinkList(const AliEveKinkList&); // Not implemented
177 AliEveKinkList& operator=(const AliEveKinkList&); // Not implemented
179 ClassDef(AliEveKinkList, 0); // A list of AliEveKink objecs.