]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemto/Infrastructure/AliFemtoParticle.h
Pad size less then cell size + ideal geom in v2
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / Infrastructure / AliFemtoParticle.h
CommitLineData
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// ***
111class AliFemtoHiddenInfo;
112// ***
113class AliFemtoParticle{
114public:
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
182private:
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
224inline AliFemtoTrack* AliFemtoParticle::Track() const { return fTrack; }
225inline unsigned long AliFemtoParticle::TrackId() const { return fTrack->TrackId(); };
226inline const AliFemtoLorentzVector& AliFemtoParticle::FourMomentum() const {return fFourMomentum;}
227inline 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
232inline unsigned long AliFemtoParticle::TopologyMap(const int word) const {return 1;}
233inline int AliFemtoParticle::NumberOfHits() const {return 1;}
234
235inline AliFemtoV0* AliFemtoParticle::V0() const { return fV0; }
236inline unsigned short AliFemtoParticle::NegTrackId() const { return fV0->idNeg(); }
237inline unsigned short AliFemtoParticle::PosTrackId() const { return fV0->idPos(); }
238inline const AliFemtoThreeVector AliFemtoParticle::DecayVertexPosition() const {return fV0->decayVertexV0(); }
239// ***
240inline AliFemtoHiddenInfo* AliFemtoParticle::getHiddenInfo() const
241{return fHiddenInfo;}
242inline const AliFemtoHiddenInfo* AliFemtoParticle::HiddenInfo() const
243{return fHiddenInfo;}
244inline void AliFemtoParticle::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo)
245{ fHiddenInfo = aHiddenInfo->clone();}
246// ***
247
248inline void AliFemtoParticle::ResetFourMomentum(const AliFemtoLorentzVector& vec){fFourMomentum = vec;}
249
250inline AliFemtoKink* AliFemtoParticle::Kink() const { return fKink; }
251
252#endif