Lines getting the matched track moved to a method in AliCalorimeterUtils. Lines copie...
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoParticle.h
CommitLineData
d0e92d9a 1///////////////////////////////////////////////////////////////////////////
2// //
3// AliFemtoParticle: main class halding all the necessary information //
4// about a particle that is required during femtoscopic analysis //
5// //
6///////////////////////////////////////////////////////////////////////////
7
8#ifndef ALIFEMTOPARTICLE_H
9#define ALIFEMTOPARTICLE_H
10
11//#include "math.h"
12#include "AliFemtoTypes.h"
13#include "AliFemtoTrack.h"
14#include "AliFemtoV0.h"
15#include "AliFemtoKink.h"
16#include "AliFemtoXi.h"
17#include "AliFmPhysicalHelixD.h"
18// ***
19class AliFemtoHiddenInfo;
20// ***
21class AliFemtoParticle{
22public:
23 AliFemtoParticle();
24 AliFemtoParticle(const AliFemtoParticle& aParticle);
25 AliFemtoParticle(const AliFemtoTrack* const hbtTrack, const double& mass);
26 AliFemtoParticle(const AliFemtoV0* const hbtV0, const double& mass);
27 AliFemtoParticle(const AliFemtoKink* const hbtKink, const double& mass);
28 AliFemtoParticle(const AliFemtoXi* const hbtXi, const double& mass);
29 ~AliFemtoParticle();
30
31 AliFemtoParticle& operator=(const AliFemtoParticle& aParticle);
32
33 const AliFemtoLorentzVector& FourMomentum() const;
34
35 AliFmPhysicalHelixD& Helix();
36
37 const AliFemtoThreeVector DecayVertexPosition() const;
38 unsigned long TopologyMap(const int word) const;
39 int NumberOfHits() const;
40
41 unsigned long TrackId() const; // only for particles from tracks
42 unsigned short NegTrackId() const; // only for particles from v0
43 unsigned short PosTrackId() const; // only for particles from v0
44
45 AliFemtoTrack* Track() const;
46 AliFemtoV0* V0() const;
47 AliFemtoKink* Kink() const;
48
0b3bd1ac 49/* const AliFemtoThreeVector& NominalTpcExitPoint() const; // position track exits TPC assuming start at (0,0,0) */
50/* const AliFemtoThreeVector& NominalTpcEntrancePoint() const; // position track crosses IFC assuming start at (0,0,0) */
d0e92d9a 51 const AliFemtoThreeVector& TpcV0PosExitPoint() const;
52 const AliFemtoThreeVector& TpcV0PosEntrancePoint() const;
53 const AliFemtoThreeVector& TpcV0NegExitPoint() const;
54 const AliFemtoThreeVector& TpcV0NegEntrancePoint() const;
55
56 // the following method is for explicit internal calculation to fill datamembers.
57 // It is invoked automatically if AliFemtoParticle constructed from AliFemtoTrack
ea77036b 58 // void CalculateNominalTpcExitAndEntrancePoints();
59 // NOTE - this requires the fHelix, so be sure this is filled
d0e92d9a 60
61
0b3bd1ac 62/* AliFemtoThreeVector fNominalPosSample[11]; // I make this public for convenience and speed of AliFemtoPair() */
63/* float fZ[45]; // Z position of cluster on padrow */
64/* float fU[45]; // U position of cluster on padrow */
65/* int fSect[45]; // Sector number of cluster on padrow */
d0e92d9a 66
67 void ResetFourMomentum(const AliFemtoLorentzVector& fourMomentum);
68
69 const AliFemtoHiddenInfo* HiddenInfo() const;
70 // Fab private
71 AliFemtoHiddenInfo* GetHiddenInfo() const;
72 void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
73 void CalculatePurity();
74 double GetPionPurity();
75 double GetKaonPurity();
76 double GetProtonPurity();
0b3bd1ac 77/* void CalculateTpcExitAndEntrancePoints( AliFmPhysicalHelixD* tHelix, */
78/* AliFemtoThreeVector* PrimVert, */
79/* AliFemtoThreeVector* SecVert, */
80/* AliFemtoThreeVector* tmpTpcEntrancePoint, */
81/* AliFemtoThreeVector* tmpTpcExitPoint, */
82/* AliFemtoThreeVector* tmpPosSample, */
83/* float* tmpZ,float* tmpU,int* tmpSect); */
d0e92d9a 84
85 // For V0 Neg Daugthers TpcEntrance/ExitPoints
0b3bd1ac 86/* AliFemtoThreeVector* fTpcV0NegPosSample; // Sample of TPC V0 neg */
87/* float* fV0NegZ; // Array of Neg Z cluster positions */
88/* float* fV0NegU; // Array of Neg U cluster positions */
89/* int* fV0NegSect; // Array of Neg cluster sectors */
d0e92d9a 90
91private:
92 AliFemtoTrack* fTrack; // copy of the track the particle was formed of, else Null
93 AliFemtoV0* fV0; // copy of the v0 the particle was formed of, else Null
94 AliFemtoKink* fKink; // copy of the v0 the particle was formed of, else Null
95 AliFemtoXi* fXi; // copy of the Xi the particle was formed of, else Null
96
97 AliFemtoLorentzVector fFourMomentum; // Particle momentum
98 AliFmPhysicalHelixD fHelix; // Particle trajectory helix
99 //unsigned long fMap[2];
100 //int fNhits;
0b3bd1ac 101/* AliFemtoThreeVector fNominalTpcExitPoint; // Point where particle exits TPC */
102/* AliFemtoThreeVector fNominalTpcEntrancePoint; // Point where particle enters TPC */
d0e92d9a 103 AliFemtoHiddenInfo* fHiddenInfo; // Fab private
104
105 double fPurity[6]; // Purity variables
106
107 static double fgPrimPimPar0; // purity parameterization parameter
108 static double fgPrimPimPar1; // purity parameterization parameter
109 static double fgPrimPimPar2; // purity parameterization parameter
110 static double fgPrimPipPar0; // purity parameterization parameter
111 static double fgPrimPipPar1; // purity parameterization parameter
112 static double fgPrimPipPar2; // purity parameterization parameter
113 static double fgPrimPmPar0; // purity parameterization parameter
114 static double fgPrimPmPar1; // purity parameterization parameter
115 static double fgPrimPmPar2; // purity parameterization parameter
116 static double fgPrimPpPar0; // purity parameterization parameter
117 static double fgPrimPpPar1; // purity parameterization parameter
118 static double fgPrimPpPar2; // purity parameterization parameter
119
120 // For V0 Daugthers TpcEntrance/ExitPoints
121 AliFemtoThreeVector fPrimaryVertex; // primary vertex of V0
122 AliFemtoThreeVector fSecondaryVertex; // secondary vertex of V0
123
124 AliFmPhysicalHelixD fHelixV0Pos; // helix for positive V0 daughter
125 AliFemtoThreeVector fTpcV0PosEntrancePoint; // positive V0 daughter entrance point to TPC
126 AliFemtoThreeVector fTpcV0PosExitPoint; // positive V0 daughter exit point from TPC
127
128 AliFmPhysicalHelixD fHelixV0Neg; // helix for negative V0 daughter
129 AliFemtoThreeVector fTpcV0NegEntrancePoint; // negative V0 daughter entrance point to TPC
130 AliFemtoThreeVector fTpcV0NegExitPoint; // negative V0 daughter exit point from TPC
131};
132
133inline AliFemtoTrack* AliFemtoParticle::Track() const { return fTrack; }
ea77036b 134inline unsigned long AliFemtoParticle::TrackId() const { return fTrack->TrackId(); }
d0e92d9a 135inline const AliFemtoLorentzVector& AliFemtoParticle::FourMomentum() const {return fFourMomentum;}
136inline AliFmPhysicalHelixD& AliFemtoParticle::Helix() {return fHelix;}
137//inline unsigned long AliFemtoParticle::TopologyMap(const int word) const {return fMap[word];}
138//inline int AliFemtoParticle::NumberOfHits() const {return fNhits;}
139//by marek chojnacki to could compile
140
fcda1d4e 141inline unsigned long AliFemtoParticle::TopologyMap(const int /* word */) const {return 1;}
d0e92d9a 142inline int AliFemtoParticle::NumberOfHits() const {return 1;}
143
144inline AliFemtoV0* AliFemtoParticle::V0() const { return fV0; }
145inline unsigned short AliFemtoParticle::NegTrackId() const { return fV0->IdNeg(); }
146inline unsigned short AliFemtoParticle::PosTrackId() const { return fV0->IdPos(); }
147inline const AliFemtoThreeVector AliFemtoParticle::DecayVertexPosition() const {return fV0->DecayVertexV0(); }
148// ***
149inline AliFemtoHiddenInfo* AliFemtoParticle::GetHiddenInfo() const
150{return fHiddenInfo;}
151inline const AliFemtoHiddenInfo* AliFemtoParticle::HiddenInfo() const
152{return fHiddenInfo;}
153inline void AliFemtoParticle::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo)
154{ fHiddenInfo = aHiddenInfo->Clone();}
155// ***
156
157inline void AliFemtoParticle::ResetFourMomentum(const AliFemtoLorentzVector& vec){fFourMomentum = vec;}
158
159inline AliFemtoKink* AliFemtoParticle::Kink() const { return fKink; }
160
161#endif