StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHbtParticle.hh
1 /***************************************************************************
2  *
3  * $Id: StHbtParticle.hh,v 1.19 2003/01/14 09:41:16 renault Exp $
4  *
5  * Author: Mike Lisa, Ohio State, lisa@mps.ohio-state.edu
6  ***************************************************************************
7  *
8  * Description: part of STAR HBT Framework: StHbtMaker 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: StHbtParticle.hh,v $
17  * Revision 1.19 2003/01/14 09:41:16 renault
18  * changes on average separation calculation, hit shared finder and memory optimisation
19  * for Z,U and Sectors variables.
20  *
21  * Revision 1.18 2002/12/12 17:01:50 kisiel
22  * Hidden Information handling and purity calculation
23  *
24  * Revision 1.17 2002/11/19 23:35:52 renault
25  * Enable calculation of exit/entrance separation for V0 daughters
26  *
27  * Revision 1.16 2001/12/14 23:11:30 fretiere
28  * Add class HitMergingCut. Add class fabricesPairCut = HitMerginCut + pair purity cuts. Add TpcLocalTransform function which convert to local tpc coord (not pretty). Modify StHbtTrack, StHbtParticle, StHbtHiddenInfo, StHbtPair to handle the hit information and cope with my code
29  *
30  * Revision 1.15 2001/05/25 23:23:59 lisa
31  * Added in StHbtKink stuff
32  *
33  * Revision 1.14 2001/05/23 00:19:05 lisa
34  * Add in Smearing classes and methods needed for momentum resolution studies and correction
35  *
36  * Revision 1.13 2001/04/03 21:04:36 kisiel
37  *
38  *
39  * Changes needed to make the Theoretical code
40  * work. The main code is the ThCorrFctn directory.
41  * The most visible change is the addition of the
42  * HiddenInfo to StHbtPair.
43  *
44  * Revision 1.12 2000/10/05 23:09:05 lisa
45  * Added kT-dependent radii to mixed-event simulator AND implemented AverageSeparation Cut and CorrFctn
46  *
47  * Revision 1.11 2000/07/17 20:03:17 lisa
48  * Implemented tools for addressing and assessing trackmerging
49  *
50  * Revision 1.10 2000/07/16 21:38:23 laue
51  * StHbtCoulomb.cxx StHbtSectoredAnalysis.cxx : updated for standalone version
52  * StHbtV0.cc StHbtV0.hh : some cast to prevent compiling warnings
53  * StHbtParticle.cc StHbtParticle.hh : pointers mTrack,mV0 initialized to 0
54  * StHbtIOBinary.cc : some printouts in #ifdef STHBTDEBUG
55  * StHbtEvent.cc : B-Field set to 0.25Tesla, we have to think about a better
56  * solution
57  *
58  * Revision 1.9 2000/05/03 17:44:43 laue
59  * StHbtEvent, StHbtTrack & StHbtV0 declared friend to StHbtIOBinary
60  * StHbtParticle updated for V0 pos,neg track Id
61  *
62  * Revision 1.8 2000/04/03 16:21:51 laue
63  * some include files changed
64  * Multi track cut added
65  *
66  * Revision 1.6 2000/02/26 19:04:52 laue
67  * Some unnecessary includes removed.
68  * StThreeVectorD replace by StHbtThreeVector.
69  * StHbtCoulomb modified to compile without Root (ClassDef embraced into
70  * #ifdef __ROOT__ ..... #endif)
71  * StHbtParticle now returns references (FourMomentum(),Helix(),
72  * DecayVertexPosiion())
73  *
74  * Revision 1.5 1999/12/11 15:58:29 lisa
75  * Add vertex decay position datum and accessor to StHbtParticle to allow pairwise cuts on seperation of V0s
76  *
77  * Revision 1.4 1999/09/17 22:38:02 lisa
78  * first full integration of V0s into StHbt framework
79  *
80  * Revision 1.3 1999/09/01 19:04:54 lisa
81  * update Particle class AND add parity cf and Randys Coulomb correction
82  *
83  * Revision 1.2 1999/07/06 22:33:23 lisa
84  * Adjusted all to work in pro and new - dev itself is broken
85  *
86  * Revision 1.1.1.1 1999/06/29 16:02:57 lisa
87  * Installation of StHbtMaker
88  *
89  **************************************************************************/
90 
91 #ifndef StHbtParticle_hh
92 #define StHbtParticle_hh
93 
94 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
95 #include "StHbtMaker/Infrastructure/StHbtTrack.hh"
96 #include "StHbtMaker/Infrastructure/StHbtV0.hh"
97 #include "StHbtMaker/Infrastructure/StHbtKink.hh"
98 #include "StHbtMaker/Infrastructure/StHbtXi.hh"
99 #include "StPhysicalHelixD.hh"
100 // ***
101 class StHbtHiddenInfo;
102 // ***
104 public:
105  StHbtParticle();
106  StHbtParticle(const StHbtTrack* const hbtTrack, const double& mass);
107  StHbtParticle(const StHbtV0* const hbtV0, const double& mass);
108  StHbtParticle(const StHbtKink* const hbtKink, const double& mass);
109  StHbtParticle(const StHbtXi* const hbtXi, const double& mass);
110  ~StHbtParticle();
111 
112  const StHbtLorentzVector& FourMomentum() const;
113 
114  StPhysicalHelixD& Helix();
115 
116  const StHbtThreeVector DecayVertexPosition() const;
117 
118  unsigned long TopologyMap(const int word) const;
119  int NumberOfHits() const;
120 
121  unsigned long TrackId() const; // only for particles from tracks
122  unsigned short NegTrackId() const; // only for particles from v0
123  unsigned short PosTrackId() const; // only for particles from v0
124 
125  StHbtTrack* Track() const;
126  StHbtV0* V0() const;
127  StHbtKink* Kink() const;
128 
129  const StHbtThreeVector& NominalTpcExitPoint() const; // position track exits TPC assuming start at (0,0,0)
130  const StHbtThreeVector& NominalTpcEntrancePoint() const; // position track crosses IFC assuming start at (0,0,0)
131  const StHbtThreeVector& TpcV0PosExitPoint() const;
132  const StHbtThreeVector& TpcV0PosEntrancePoint() const;
133  const StHbtThreeVector& TpcV0NegExitPoint() const;
134  const StHbtThreeVector& TpcV0NegEntrancePoint() const;
135 
136  // the following method is for explicit internal calculation to fill datamembers.
137  // It is invoked automatically if StHbtParticle constructed from StHbtTrack
138  //void CalculateNominalTpcExitAndEntrancePoints(); // NOTE - this requires the mHelix, so be sure this is filled
139 
140 
141  StHbtThreeVector mNominalPosSample[11]; // I make this public for convenience and speed of StHbtPair()
142  float mZ[45];
143  float mU[45];
144  int mSect[45];
145 
146  void ResetFourMomentum(const StHbtLorentzVector& fourMomentum);
147 
148  const StHbtHiddenInfo* HiddenInfo() const;
149  // Fab private
150  StHbtHiddenInfo* getHiddenInfo() const;
151  void SetHiddenInfo(StHbtHiddenInfo* aHiddenInfo);
152  void CalculatePurity();
153  double GetPionPurity();
154  double GetKaonPurity();
155  double GetProtonPurity();
156  void CalculateTpcExitAndEntrancePoints( StPhysicalHelixD* tHelix,
157  StHbtThreeVector* PrimVert,
158  StHbtThreeVector* SecVert,
159  StHbtThreeVector* tmpTpcEntrancePoint,
160  StHbtThreeVector* tmpTpcExitPoint,
161  StHbtThreeVector* tmpPosSample,
162  float* tmpZ,float* tmpU,int* tmpSect);
163 
164  // For V0 Neg Daugthers TpcEntrance/ExitPoints
165  StHbtThreeVector* mTpcV0NegPosSample;
166  float* mV0NegZ;
167  float* mV0NegU;
168  int* mV0NegSect;
169 
170 private:
171  StHbtTrack* mTrack; // copy of the track the particle was formed of, else Null
172  StHbtV0* mV0; // copy of the v0 the particle was formed of, else Null
173  StHbtKink* mKink; // copy of the v0 the particle was formed of, else Null
174  StHbtXi* mXi;
175 
176  StHbtLorentzVector mFourMomentum;
177  StPhysicalHelixD mHelix;
178  unsigned long mMap[2];
179  int mNhits;
180  StHbtThreeVector mNominalTpcExitPoint;
181  StHbtThreeVector mNominalTpcEntrancePoint;
182  StHbtHiddenInfo* mHiddenInfo; // Fab private
183 
184  double mPurity[6];
185 
186  static double mPrimPimPar0;
187  static double mPrimPimPar1;
188  static double mPrimPimPar2;
189  static double mPrimPipPar0;
190  static double mPrimPipPar1;
191  static double mPrimPipPar2;
192  static double mPrimPmPar0;
193  static double mPrimPmPar1;
194  static double mPrimPmPar2;
195  static double mPrimPpPar0;
196  static double mPrimPpPar1;
197  static double mPrimPpPar2;
198 
199  // For V0 Daugthers TpcEntrance/ExitPoints
200  StHbtThreeVector mPrimaryVertex;
201  StHbtThreeVector mSecondaryVertex;
202 
203  StPhysicalHelixD mHelixV0Pos;
204  StHbtThreeVector mTpcV0PosEntrancePoint;
205  StHbtThreeVector mTpcV0PosExitPoint;
206 
207  StPhysicalHelixD mHelixV0Neg;
208  StHbtThreeVector mTpcV0NegEntrancePoint;
209  StHbtThreeVector mTpcV0NegExitPoint;
210 };
211 
212 inline StHbtTrack* StHbtParticle::Track() const { return mTrack; }
213 inline unsigned long StHbtParticle::TrackId() const { return mTrack->TrackId(); };
214 inline const StHbtLorentzVector& StHbtParticle::FourMomentum() const {return mFourMomentum;}
215 inline StPhysicalHelixD& StHbtParticle::Helix() {return mHelix;}
216 inline unsigned long StHbtParticle::TopologyMap(const int word) const {return mMap[word];}
217 inline int StHbtParticle::NumberOfHits() const {return mNhits;}
218 inline StHbtV0* StHbtParticle::V0() const { return mV0; }
219 inline unsigned short StHbtParticle::NegTrackId() const { return mV0->idNeg(); }
220 inline unsigned short StHbtParticle::PosTrackId() const { return mV0->idPos(); }
221 inline const StHbtThreeVector StHbtParticle::DecayVertexPosition() const {return mV0->decayVertexV0(); }
222 // ***
223 inline StHbtHiddenInfo* StHbtParticle::getHiddenInfo() const
224 {return mHiddenInfo;}
225 inline const StHbtHiddenInfo* StHbtParticle::HiddenInfo() const
226 {return mHiddenInfo;}
227 inline void StHbtParticle::SetHiddenInfo(StHbtHiddenInfo* aHiddenInfo)
228 { mHiddenInfo = aHiddenInfo->clone();}
229 // ***
230 
231 inline void StHbtParticle::ResetFourMomentum(const StHbtLorentzVector& vec){mFourMomentum = vec;}
232 
233 inline StHbtKink* StHbtParticle::Kink() const { return mKink; }
234 
235 #endif
Number of hits in diffent zones of the TPC for a given track.
Definition: TopologyMap.hh:29
C++ STL includes.
Definition: AgUStep.h:47