]>
Commit | Line | Data |
---|---|---|
67427ff7 | 1 | /*************************************************************************** |
2 | * | |
3 | * $Id$ | |
4 | * | |
5 | * Author: Mike Lisa, Ohio State, lisa@mps.ohio-state.edu | |
6 | *************************************************************************** | |
7 | * | |
8 | * Description: part of STAR HBT Framework: AliFemtoMaker package | |
9 | * Particle objects are part of the PicoEvent, which is what is | |
10 | * stored in the EventMixingBuffers | |
11 | * A Track object gets converted to a Particle object if it | |
12 | * passes the ParticleCut of an Analysis | |
13 | * | |
14 | *************************************************************************** | |
15 | * | |
16 | * $Log$ | |
0215f606 | 17 | * Revision 1.1.1.1 2007/04/25 15:38:41 panos |
18 | * Importing the HBT code dir | |
19 | * | |
67427ff7 | 20 | * Revision 1.2 2007-04-03 16:00:08 mchojnacki |
21 | * Changes to iprove memory managing | |
22 | * | |
23 | * Revision 1.1.1.1 2007/03/07 10:14:49 mchojnacki | |
24 | * First version on CVS | |
25 | * | |
26 | * Revision 1.19 2003/01/14 09:41:16 renault | |
27 | * changes on average separation calculation, hit shared finder and memory optimisation | |
28 | * for Z,U and Sectors variables. | |
29 | * | |
30 | * Revision 1.18 2002/12/12 17:01:50 kisiel | |
31 | * Hidden Information handling and purity calculation | |
32 | * | |
33 | * Revision 1.17 2002/11/19 23:35:52 renault | |
34 | * Enable calculation of exit/entrance separation for V0 daughters | |
35 | * | |
36 | * Revision 1.16 2001/12/14 23:11:30 fretiere | |
37 | * Add class HitMergingCut. Add class fabricesPairCut = HitMerginCut + pair purity cuts. Add TpcLocalTransform function which convert to local tpc coord (not pretty). Modify AliFemtoTrack, AliFemtoParticle, AliFemtoHiddenInfo, AliFemtoPair to handle the hit information and cope with my code | |
38 | * | |
39 | * Revision 1.15 2001/05/25 23:23:59 lisa | |
40 | * Added in AliFemtoKink stuff | |
41 | * | |
42 | * Revision 1.14 2001/05/23 00:19:05 lisa | |
43 | * Add in Smearing classes and methods needed for momentum resolution studies and correction | |
44 | * | |
45 | * Revision 1.13 2001/04/03 21:04:36 kisiel | |
46 | * | |
47 | * | |
48 | * Changes needed to make the Theoretical code | |
49 | * work. The main code is the ThCorrFctn directory. | |
50 | * The most visible change is the addition of the | |
51 | * HiddenInfo to AliFemtoPair. | |
52 | * | |
53 | * Revision 1.12 2000/10/05 23:09:05 lisa | |
54 | * Added kT-dependent radii to mixed-event simulator AND implemented AverageSeparation Cut and CorrFctn | |
55 | * | |
56 | * Revision 1.11 2000/07/17 20:03:17 lisa | |
57 | * Implemented tools for addressing and assessing trackmerging | |
58 | * | |
59 | * Revision 1.10 2000/07/16 21:38:23 laue | |
60 | * AliFemtoCoulomb.cxx AliFemtoSectoredAnalysis.cxx : updated for standalone version | |
61 | * AliFemtoV0.cc AliFemtoV0.h : some cast to prevent compiling warnings | |
62 | * AliFemtoParticle.cc AliFemtoParticle.h : pointers fTrack,fV0 initialized to 0 | |
63 | * AliFemtoIOBinary.cc : some printouts in #ifdef STHBTDEBUG | |
64 | * AliFemtoEvent.cc : B-Field set to 0.25Tesla, we have to think about a better | |
65 | * solution | |
66 | * | |
67 | * Revision 1.9 2000/05/03 17:44:43 laue | |
68 | * AliFemtoEvent, AliFemtoTrack & AliFemtoV0 declared friend to AliFemtoIOBinary | |
69 | * AliFemtoParticle updated for V0 pos,neg track Id | |
70 | * | |
71 | * Revision 1.8 2000/04/03 16:21:51 laue | |
72 | * some include files changed | |
73 | * Multi track cut added | |
74 | * | |
75 | * Revision 1.6 2000/02/26 19:04:52 laue | |
76 | * Some unnecessary includes removed. | |
77 | * StThreeVectorD replace by AliFemtoThreeVector. | |
78 | * AliFemtoCoulomb modified to compile without Root (ClassDef embraced into | |
79 | * #ifdef __ROOT__ ..... #endif) | |
80 | * AliFemtoParticle now returns references (FourMomentum(),Helix(), | |
81 | * DecayVertexPosiion()) | |
82 | * | |
83 | * Revision 1.5 1999/12/11 15:58:29 lisa | |
84 | * Add vertex decay position datum and accessor to AliFemtoParticle to allow pairwise cuts on seperation of V0s | |
85 | * | |
86 | * Revision 1.4 1999/09/17 22:38:02 lisa | |
87 | * first full integration of V0s into AliFemto framework | |
88 | * | |
89 | * Revision 1.3 1999/09/01 19:04:54 lisa | |
90 | * update Particle class AND add parity cf and Randys Coulomb correction | |
91 | * | |
92 | * Revision 1.2 1999/07/06 22:33:23 lisa | |
93 | * Adjusted all to work in pro and new - dev itself is broken | |
94 | * | |
95 | * Revision 1.1.1.1 1999/06/29 16:02:57 lisa | |
96 | * Installation of AliFemtoMaker | |
97 | * | |
98 | **************************************************************************/ | |
99 | ||
100 | #ifndef AliFemtoParticle_hh | |
101 | #define AliFemtoParticle_hh | |
102 | ||
103 | //#include "math.h" | |
104 | #include "Infrastructure/AliFemtoTypes.h" | |
105 | #include "Infrastructure/AliFemtoTrack.h" | |
106 | #include "Infrastructure/AliFemtoV0.h" | |
107 | #include "Infrastructure/AliFemtoKink.h" | |
108 | #include "Infrastructure/AliFemtoXi.h" | |
109 | #include "AliFmPhysicalHelixD.h" | |
110 | // *** | |
111 | class AliFemtoHiddenInfo; | |
112 | // *** | |
113 | class AliFemtoParticle{ | |
114 | public: | |
115 | AliFemtoParticle(); | |
0215f606 | 116 | AliFemtoParticle(const AliFemtoParticle& aParticle); |
67427ff7 | 117 | AliFemtoParticle(const AliFemtoTrack* const hbtTrack, const double& mass); |
118 | AliFemtoParticle(const AliFemtoV0* const hbtV0, const double& mass); | |
119 | AliFemtoParticle(const AliFemtoKink* const hbtKink, const double& mass); | |
120 | AliFemtoParticle(const AliFemtoXi* const hbtXi, const double& mass); | |
121 | ~AliFemtoParticle(); | |
122 | ||
0215f606 | 123 | AliFemtoParticle& operator=(const AliFemtoParticle& aParticle); |
124 | ||
67427ff7 | 125 | const AliFemtoLorentzVector& FourMomentum() const; |
126 | ||
127 | AliFmPhysicalHelixD& Helix(); | |
128 | ||
129 | const AliFemtoThreeVector DecayVertexPosition() const; | |
130 | unsigned long TopologyMap(const int word) const; | |
131 | int NumberOfHits() const; | |
132 | ||
133 | unsigned long TrackId() const; // only for particles from tracks | |
134 | unsigned short NegTrackId() const; // only for particles from v0 | |
135 | unsigned short PosTrackId() const; // only for particles from v0 | |
136 | ||
137 | AliFemtoTrack* Track() const; | |
138 | AliFemtoV0* V0() const; | |
139 | AliFemtoKink* Kink() const; | |
140 | ||
141 | const AliFemtoThreeVector& NominalTpcExitPoint() const; // position track exits TPC assuming start at (0,0,0) | |
142 | const AliFemtoThreeVector& NominalTpcEntrancePoint() const; // position track crosses IFC assuming start at (0,0,0) | |
143 | const AliFemtoThreeVector& TpcV0PosExitPoint() const; | |
144 | const AliFemtoThreeVector& TpcV0PosEntrancePoint() const; | |
145 | const AliFemtoThreeVector& TpcV0NegExitPoint() const; | |
146 | const AliFemtoThreeVector& TpcV0NegEntrancePoint() const; | |
147 | ||
148 | // the following method is for explicit internal calculation to fill datamembers. | |
149 | // It is invoked automatically if AliFemtoParticle constructed from AliFemtoTrack | |
150 | //void CalculateNominalTpcExitAndEntrancePoints(); // NOTE - this requires the fHelix, so be sure this is filled | |
151 | ||
152 | ||
153 | AliFemtoThreeVector fNominalPosSample[11]; // I make this public for convenience and speed of AliFemtoPair() | |
154 | float fZ[45]; | |
155 | float fU[45]; | |
156 | int fSect[45]; | |
157 | ||
158 | void ResetFourMomentum(const AliFemtoLorentzVector& fourMomentum); | |
159 | ||
160 | const AliFemtoHiddenInfo* HiddenInfo() const; | |
161 | // Fab private | |
162 | AliFemtoHiddenInfo* getHiddenInfo() const; | |
163 | void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo); | |
164 | void CalculatePurity(); | |
165 | double GetPionPurity(); | |
166 | double GetKaonPurity(); | |
167 | double GetProtonPurity(); | |
168 | void CalculateTpcExitAndEntrancePoints( AliFmPhysicalHelixD* tHelix, | |
169 | AliFemtoThreeVector* PrimVert, | |
170 | AliFemtoThreeVector* SecVert, | |
171 | AliFemtoThreeVector* tmpTpcEntrancePoint, | |
172 | AliFemtoThreeVector* tmpTpcExitPoint, | |
173 | AliFemtoThreeVector* tmpPosSample, | |
174 | float* tmpZ,float* tmpU,int* tmpSect); | |
175 | ||
176 | // For V0 Neg Daugthers TpcEntrance/ExitPoints | |
177 | AliFemtoThreeVector* fTpcV0NegPosSample; | |
178 | float* fV0NegZ; | |
179 | float* fV0NegU; | |
180 | int* fV0NegSect; | |
181 | ||
182 | private: | |
183 | AliFemtoTrack* fTrack; // copy of the track the particle was formed of, else Null | |
184 | AliFemtoV0* fV0; // copy of the v0 the particle was formed of, else Null | |
185 | AliFemtoKink* fKink; // copy of the v0 the particle was formed of, else Null | |
186 | AliFemtoXi* fXi; | |
187 | ||
188 | AliFemtoLorentzVector fFourMomentum; | |
189 | AliFmPhysicalHelixD fHelix; | |
190 | //unsigned long fMap[2]; | |
191 | //int fNhits; | |
192 | AliFemtoThreeVector fNominalTpcExitPoint; | |
193 | AliFemtoThreeVector fNominalTpcEntrancePoint; | |
194 | AliFemtoHiddenInfo* fHiddenInfo; // Fab private | |
195 | ||
196 | double fPurity[6]; | |
197 | ||
198 | static double fPrimPimPar0; | |
199 | static double fPrimPimPar1; | |
200 | static double fPrimPimPar2; | |
201 | static double fPrimPipPar0; | |
202 | static double fPrimPipPar1; | |
203 | static double fPrimPipPar2; | |
204 | static double fPrimPmPar0; | |
205 | static double fPrimPmPar1; | |
206 | static double fPrimPmPar2; | |
207 | static double fPrimPpPar0; | |
208 | static double fPrimPpPar1; | |
209 | static double fPrimPpPar2; | |
210 | ||
211 | // For V0 Daugthers TpcEntrance/ExitPoints | |
212 | AliFemtoThreeVector fPrimaryVertex; | |
213 | AliFemtoThreeVector fSecondaryVertex; | |
214 | ||
215 | AliFmPhysicalHelixD fHelixV0Pos; | |
216 | AliFemtoThreeVector fTpcV0PosEntrancePoint; | |
217 | AliFemtoThreeVector fTpcV0PosExitPoint; | |
218 | ||
219 | AliFmPhysicalHelixD fHelixV0Neg; | |
220 | AliFemtoThreeVector fTpcV0NegEntrancePoint; | |
221 | AliFemtoThreeVector fTpcV0NegExitPoint; | |
222 | }; | |
223 | ||
224 | inline AliFemtoTrack* AliFemtoParticle::Track() const { return fTrack; } | |
225 | inline unsigned long AliFemtoParticle::TrackId() const { return fTrack->TrackId(); }; | |
226 | inline const AliFemtoLorentzVector& AliFemtoParticle::FourMomentum() const {return fFourMomentum;} | |
227 | inline AliFmPhysicalHelixD& AliFemtoParticle::Helix() {return fHelix;} | |
228 | //inline unsigned long AliFemtoParticle::TopologyMap(const int word) const {return fMap[word];} | |
229 | //inline int AliFemtoParticle::NumberOfHits() const {return fNhits;} | |
230 | //by marek chojnacki to could compile | |
231 | ||
232 | inline unsigned long AliFemtoParticle::TopologyMap(const int word) const {return 1;} | |
233 | inline int AliFemtoParticle::NumberOfHits() const {return 1;} | |
234 | ||
235 | inline AliFemtoV0* AliFemtoParticle::V0() const { return fV0; } | |
236 | inline unsigned short AliFemtoParticle::NegTrackId() const { return fV0->idNeg(); } | |
237 | inline unsigned short AliFemtoParticle::PosTrackId() const { return fV0->idPos(); } | |
238 | inline const AliFemtoThreeVector AliFemtoParticle::DecayVertexPosition() const {return fV0->decayVertexV0(); } | |
239 | // *** | |
240 | inline AliFemtoHiddenInfo* AliFemtoParticle::getHiddenInfo() const | |
241 | {return fHiddenInfo;} | |
242 | inline const AliFemtoHiddenInfo* AliFemtoParticle::HiddenInfo() const | |
243 | {return fHiddenInfo;} | |
244 | inline void AliFemtoParticle::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) | |
245 | { fHiddenInfo = aHiddenInfo->clone();} | |
246 | // *** | |
247 | ||
248 | inline void AliFemtoParticle::ResetFourMomentum(const AliFemtoLorentzVector& vec){fFourMomentum = vec;} | |
249 | ||
250 | inline AliFemtoKink* AliFemtoParticle::Kink() const { return fKink; } | |
251 | ||
252 | #endif |