00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 #ifndef StHbtV0_hh
00070 #define StHbtV0_hh
00071
00072 #include "Stiostream.h"
00073 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
00074 #include "StarClassLibrary/StPhysicalHelixD.hh"
00075 #ifdef __ROOT__
00076 #include "StStrangeMuDstMaker/StV0MuDst.hh"
00077 #endif
00078
00079 #include "StHbtMaker/Base/StHbtHiddenInfo.hh"
00080
00081 class StHbtTTreeEvent;
00082 class StHbtTTreeV0;
00083
00084 class StHbtV0 {
00085 public:
00086 StHbtV0(){}
00087 StHbtV0( const StHbtV0&);
00088 #ifdef __ROOT__
00089 StHbtV0( StV0MuDst&);
00090 StHbtV0(const StHbtTTreeEvent*, const StHbtTTreeV0*);
00091 #endif
00092 ~StHbtV0(){if(mHiddenInfo) delete mHiddenInfo;}
00093
00094
00095 float decayLengthV0() const;
00096 StHbtThreeVector decayVertexV0() const;
00097 StHbtThreeVector primaryVertex() const;
00098 float decayVertexV0X() const;
00099 float decayVertexV0Y() const;
00100 float decayVertexV0Z() const;
00101 float dcaV0Daughters() const;
00102 float dcaV0ToPrimVertex() const;
00103 float dcaPosToPrimVertex() const;
00104 float dcaNegToPrimVertex() const;
00105 StHbtThreeVector momPos() const;
00106 float momPosX() const;
00107 float momPosY() const;
00108 float momPosZ() const;
00109 StHbtThreeVector momNeg() const;
00110 float momNegX() const;
00111 float momNegY() const;
00112 float momNegZ() const;
00113
00114 int tpcHitsPos() const;
00115 int tpcHitsNeg() const;
00116 unsigned long trackTopologyMapPos(unsigned int) const;
00117 unsigned long trackTopologyMapNeg(unsigned int) const;
00118
00119 StHbtThreeVector momV0() const ;
00120 float momV0X() const ;
00121 float momV0Y() const ;
00122 float momV0Z() const ;
00123 float alphaV0() const ;
00124 float ptArmV0() const ;
00125 float eLambda() const ;
00126 float eK0Short() const ;
00127 float ePosProton() const ;
00128 float ePosPion() const ;
00129 float eNegProton() const ;
00130 float eNegPion() const ;
00131 float massLambda() const ;
00132 float massAntiLambda() const ;
00133 float massK0Short() const ;
00134 float rapLambda() const ;
00135 float rapK0Short() const ;
00136 float cTauLambda() const ;
00137 float cTauK0Short() const ;
00138 float ptV0() const ;
00139 float ptotV0() const ;
00140 float ptPos() const ;
00141 float ptotPos() const ;
00142 float dedxPos() const;
00143 float numdedxPos() const;
00144
00145 float errdedxPos() const;
00146
00147 float lendedxPos() const;
00148
00149 float pseudoRapPos() const;
00150
00151
00152 float ptNeg() const ;
00153 float ptotNeg() const ;
00154 float dedxNeg() const;
00155 float numdedxNeg() const;
00156
00157 float errdedxNeg() const;
00158
00159 float lendedxNeg() const;
00160
00161 float pseudoRapNeg() const;
00162
00163
00164 unsigned short idNeg() const;
00165 unsigned short idPos() const;
00166 unsigned short keyNeg() const;
00167 unsigned short keyPos() const;
00168
00169 const StPhysicalHelixD& HelixPos() const;
00170 const StPhysicalHelixD& HelixNeg() const;
00171
00172 void UpdateV0();
00173 void SetdecayLengthV0(const float);
00174 void SetdecayVertexV0(const StHbtThreeVector);
00175 void SetdecayVertexV0X(const float);
00176 void SetdecayVertexV0Y(const float);
00177 void SetdecayVertexV0Z(const float);
00178 void SetdcaV0Daughters(const float);
00179 void SetdcaV0ToPrimVertex(const float);
00180 void SetdcaPosToPrimVertex(const float);
00181 void SetdcaNegToPrimVertex(const float);
00182 void SetmomPos(const StHbtThreeVector);
00183 void SetmomPosX(const float);
00184 void SetmomPosY(const float);
00185 void SetmomPosZ(const float);
00186 void SetmomNeg(const StHbtThreeVector);
00187 void SetmomNegX(const float);
00188 void SetmomNegY(const float);
00189 void SetmomNegZ(const float);
00190
00191 void SettpcHitsPos(const int&);
00192 void SettpcHitsNeg(const int&);
00193
00194 void SetTrackTopologyMapPos(unsigned int, const unsigned long&);
00195 void SetTrackTopologyMapNeg(unsigned int, const unsigned long&);
00196
00197 void SetmomV0( StHbtThreeVector);
00198 void SetmomV0X( float);
00199 void SetmomV0Y( float);
00200 void SetmomV0Z( float);
00201 void SetalphaV0( float);
00202 void SetptArmV0( float);
00203 void SeteLambda( float);
00204 void SeteK0Short( float);
00205 void SetePosProton( float);
00206 void SetePosPion( float);
00207 void SeteNegProton( float);
00208 void SeteNegPion( float);
00209 void SetmassLambda( float);
00210 void SetmassAntiLambda( float);
00211 void SetmassK0Short( float);
00212 void SetrapLambda( float);
00213 void SetrapK0Short( float);
00214 void SetcTauLambda( float);
00215 void SetcTauK0Short( float);
00216 void SetptV0( float);
00217 void SetptotV0( float);
00218 void SetptPos( float);
00219 void SetptotPos( float);
00220 void SetptNeg( float);
00221 void SetptotNeg( float);
00222 void SetidNeg(const unsigned short&);
00223 void SetidPos(const unsigned short&);
00224 void SetdedxNeg(float);
00225 void SeterrdedxNeg(float x);
00226 void SetlendedxNeg(float x);
00227 void SetpseudoRapNeg(float x);
00228 void SetdedxPos(float);
00229 void SeterrdedxPos(float x);
00230 void SetlendedxPos(float x);
00231 void SetpseudoRapPos(float x);
00232 void SetkeyNeg(const unsigned short&);
00233 void SetkeyPos(const unsigned short&);
00234
00235 void SetHelixPos(const StPhysicalHelixD&);
00236 void SetHelixNeg(const StPhysicalHelixD&);
00237
00238 void SetprimaryVertex(const StHbtThreeVector v);
00239
00240 void SetHiddenInfo(StHbtHiddenInfo* aHiddenInfo);
00241 bool ValidHiddenInfo() const;
00242
00243 StHbtHiddenInfo* getHiddenInfo() const;
00244
00245 friend ostream& operator<<(ostream& out, StHbtV0& v0);
00246 friend istream& operator>>(istream& in, StHbtV0& v0);
00247
00248 friend class StHbtIOBinary;
00249 friend class StHbtTTreeV0;
00250 friend class StHbtTTreeXi;
00251
00252 protected:
00253
00254 float mDecayLengthV0;
00255 StHbtThreeVector mDecayVertexV0;
00256 StHbtThreeVector mPrimaryVertex;
00257 float mDcaV0Daughters;
00258 float mDcaV0ToPrimVertex;
00259 float mDcaPosToPrimVertex;
00260 float mDcaNegToPrimVertex;
00261 StHbtThreeVector mMomPos;
00262 StHbtThreeVector mMomNeg;
00263
00264 unsigned long mTrackTopologyMapPos[2];
00265 unsigned long mTrackTopologyMapNeg[2];
00266
00267 int mTpcHitsPos;
00268 int mTpcHitsNeg;
00269
00270 float mChi2V0;
00271 float mClV0;
00272 float mChi2Pos;
00273 float mClPos;
00274 float mChi2Neg;
00275 float mClNeg;
00276
00277 float mDedxPos;
00278 float mErrDedxPos;
00279 float mLenDedxPos;
00280
00281 float mDedxNeg;
00282 float mErrDedxNeg;
00283 float mLenDedxNeg;
00284
00285 unsigned short mNumDedxPos;
00286 unsigned short mNumDedxNeg;
00287
00288 StPhysicalHelixD mHelixPos;
00289 StPhysicalHelixD mHelixNeg;
00290
00291
00292 StHbtThreeVector mMomV0;
00293 float mAlphaV0;
00294 float mPtArmV0;
00295 float mELambda;
00296 float mEK0Short;
00297 float mEPosProton;
00298 float mEPosPion;
00299 float mENegProton;
00300 float mENegPion;
00301 float mMassLambda;
00302 float mMassAntiLambda;
00303 float mMassK0Short;
00304 float mRapLambda;
00305 float mRapK0Short;
00306 float mCTauLambda;
00307 float mCTauK0Short;
00308 float mPtV0;
00309 float mPtotV0;
00310 float mPtPos;
00311 float mPtotPos;
00312 float mPtNeg;
00313 float mPtotNeg;
00314
00315 unsigned short mKeyNeg;
00316 unsigned short mKeyPos;
00317
00318
00319 mutable StHbtHiddenInfo* mHiddenInfo;
00320
00321
00322
00323 };
00324
00325
00326
00327 inline float StHbtV0::decayLengthV0() const { return mDecayLengthV0; }
00328 inline StHbtThreeVector StHbtV0::decayVertexV0() const { return mDecayVertexV0; }
00329 inline StHbtThreeVector StHbtV0::primaryVertex() const { return mPrimaryVertex; }
00330 inline float StHbtV0::decayVertexV0X() const { return mDecayVertexV0.x(); }
00331 inline float StHbtV0::decayVertexV0Y() const { return mDecayVertexV0.y(); }
00332 inline float StHbtV0::decayVertexV0Z() const { return mDecayVertexV0.z(); }
00333 inline float StHbtV0::dcaV0Daughters() const { return mDcaV0Daughters; }
00334 inline float StHbtV0::dcaV0ToPrimVertex() const { return mDcaV0ToPrimVertex; }
00335 inline float StHbtV0::dcaPosToPrimVertex() const { return mDcaPosToPrimVertex; }
00336 inline float StHbtV0::dcaNegToPrimVertex() const { return mDcaNegToPrimVertex; }
00337 inline StHbtThreeVector StHbtV0::momPos() const { return mMomPos; }
00338 inline float StHbtV0::momPosX() const { return mMomPos.x(); }
00339 inline float StHbtV0::momPosY() const { return mMomPos.y(); }
00340 inline float StHbtV0::momPosZ() const { return mMomPos.z(); }
00341 inline StHbtThreeVector StHbtV0::momNeg() const { return mMomNeg; }
00342 inline float StHbtV0::momNegX() const { return mMomNeg.x(); }
00343 inline float StHbtV0::momNegY() const { return mMomNeg.y(); }
00344 inline float StHbtV0::momNegZ() const { return mMomNeg.z(); }
00345 inline StHbtThreeVector StHbtV0::momV0() const { return mMomV0; }
00346 inline float StHbtV0::momV0X() const { return mMomV0.x(); }
00347 inline float StHbtV0::momV0Y() const { return mMomV0.y(); }
00348 inline float StHbtV0::momV0Z() const { return mMomV0.z(); }
00349 inline float StHbtV0::alphaV0() const { return mAlphaV0; }
00350 inline float StHbtV0::ptArmV0() const {return mPtArmV0;}
00351 inline float StHbtV0::eLambda() const {return mELambda;}
00352 inline float StHbtV0::eK0Short() const {return mEK0Short;}
00353 inline float StHbtV0::ePosProton() const {return mEPosProton;}
00354 inline float StHbtV0::ePosPion() const {return mEPosPion;}
00355 inline float StHbtV0::eNegProton() const {return mENegProton;}
00356 inline float StHbtV0::eNegPion() const {return mENegPion;}
00357 inline float StHbtV0::massLambda() const {return mMassLambda;}
00358 inline float StHbtV0::massAntiLambda() const {return mMassAntiLambda;}
00359 inline float StHbtV0::massK0Short() const {return mMassK0Short;}
00360 inline float StHbtV0::rapLambda() const {return mRapLambda;}
00361 inline float StHbtV0::rapK0Short() const {return mRapK0Short;}
00362 inline float StHbtV0::cTauLambda() const {return mCTauLambda;}
00363 inline float StHbtV0::cTauK0Short() const {return mCTauK0Short;}
00364 inline float StHbtV0::ptV0() const {return mPtV0;}
00365 inline float StHbtV0::ptotV0() const {return mPtotV0;}
00366 inline float StHbtV0::ptPos() const {return mPtPos;}
00367 inline float StHbtV0::ptotPos() const {return mPtotPos;}
00368 inline float StHbtV0::ptNeg() const {return mPtNeg;}
00369 inline float StHbtV0::ptotNeg() const {return mPtotNeg;}
00370 inline int StHbtV0::tpcHitsPos() const { return mTpcHitsPos; }
00371 inline int StHbtV0::tpcHitsNeg() const { return mTpcHitsNeg; }
00372 inline float StHbtV0::dedxNeg() const {return mDedxNeg;}
00373 inline float StHbtV0::numdedxNeg() const {return mNumDedxNeg;}
00374 inline float StHbtV0::errdedxNeg() const {return mErrDedxNeg;}
00375 inline float StHbtV0::lendedxNeg() const {return mLenDedxNeg;}
00376 inline float StHbtV0::pseudoRapNeg() const {return mMomNeg.pseudoRapidity();}
00377 inline float StHbtV0::dedxPos() const {return mDedxPos;}
00378 inline float StHbtV0::numdedxPos() const {return mNumDedxPos;}
00379 inline float StHbtV0::errdedxPos() const {return mErrDedxPos;}
00380 inline float StHbtV0::lendedxPos() const {return mLenDedxPos;}
00381 inline float StHbtV0::pseudoRapPos() const {return mMomPos.pseudoRapidity();}
00382
00383
00384 inline unsigned long StHbtV0::trackTopologyMapPos(unsigned int word) const { return mTrackTopologyMapPos[word]; }
00385 inline unsigned long StHbtV0::trackTopologyMapNeg(unsigned int word) const { return mTrackTopologyMapNeg[word]; }
00386 inline unsigned short StHbtV0::idNeg() const { return mKeyNeg; }
00387 inline unsigned short StHbtV0::keyNeg() const { return mKeyNeg; }
00388 inline unsigned short StHbtV0::idPos() const { return mKeyPos; }
00389 inline unsigned short StHbtV0::keyPos() const { return mKeyPos; }
00390
00391 inline void StHbtV0::SetdecayLengthV0(const float x){ mDecayLengthV0= x;}
00392 inline void StHbtV0::SetdecayVertexV0X(const float x){ mDecayVertexV0.setX(x);}
00393 inline void StHbtV0::SetdecayVertexV0Y(const float x){ mDecayVertexV0.setY(x);}
00394 inline void StHbtV0::SetdecayVertexV0Z(const float x){ mDecayVertexV0.setZ(x);}
00395 inline void StHbtV0::SetdecayVertexV0(const StHbtThreeVector v){ mDecayVertexV0 = v; }
00396 inline void StHbtV0::SetdcaV0Daughters(const float x){mDcaV0Daughters= x;}
00397 inline void StHbtV0::SetdcaV0ToPrimVertex(const float x){mDcaV0ToPrimVertex= x;}
00398 inline void StHbtV0::SetdcaPosToPrimVertex(const float x){mDcaPosToPrimVertex = x;}
00399 inline void StHbtV0::SetdcaNegToPrimVertex(const float x){mDcaNegToPrimVertex = x;}
00400 inline void StHbtV0::SetmomPos(const StHbtThreeVector v){mMomPos = v; }
00401 inline void StHbtV0::SetmomPosX(const float x){mMomPos.setX(x);}
00402 inline void StHbtV0::SetmomPosY(const float x){mMomPos.setY(x);}
00403 inline void StHbtV0::SetmomPosZ(const float x){mMomPos.setZ(x);}
00404 inline void StHbtV0::SetmomNeg(const StHbtThreeVector v){mMomNeg = v; }
00405 inline void StHbtV0::SetmomNegX(const float x){mMomNeg.setX(x);}
00406 inline void StHbtV0::SetmomNegY(const float x){mMomNeg.setY(x);}
00407 inline void StHbtV0::SetmomNegZ(const float x){mMomNeg.setZ(x);}
00408 inline void StHbtV0::SetTrackTopologyMapPos(unsigned int word, const unsigned long& m){mTrackTopologyMapPos[word]=m;}
00409 inline void StHbtV0::SetTrackTopologyMapNeg(unsigned int word, const unsigned long& m){mTrackTopologyMapNeg[word]=m;}
00410 inline void StHbtV0::SetmomV0(StHbtThreeVector v){mMomV0= v; }
00411 inline void StHbtV0::SetmomV0X(const float x){mMomV0.setX(x);}
00412 inline void StHbtV0::SetmomV0Y(const float x){mMomV0.setY(x);}
00413 inline void StHbtV0::SetmomV0Z(const float x){mMomV0.setZ(x);}
00414
00415 inline void StHbtV0::SetalphaV0( float x){mAlphaV0= x;}
00416 inline void StHbtV0::SetptArmV0( float x){mPtArmV0 = x;}
00417 inline void StHbtV0::SeteLambda( float x){mELambda= x;}
00418 inline void StHbtV0::SeteK0Short( float x){mEK0Short= x;}
00419 inline void StHbtV0::SetePosProton( float x){mEPosProton= x;}
00420 inline void StHbtV0::SetePosPion( float x){mEPosPion= x;}
00421 inline void StHbtV0::SeteNegProton( float x){mENegProton= x;}
00422 inline void StHbtV0::SeteNegPion( float x){mENegPion= x;}
00423 inline void StHbtV0::SetmassLambda( float x){mMassLambda = x;}
00424 inline void StHbtV0::SetmassAntiLambda( float x){mMassAntiLambda= x;}
00425 inline void StHbtV0::SetmassK0Short( float x){mMassK0Short= x;}
00426 inline void StHbtV0::SetrapLambda( float x){mRapLambda= x;}
00427 inline void StHbtV0::SetrapK0Short( float x){mRapK0Short = x;}
00428 inline void StHbtV0::SetcTauLambda( float x){mCTauLambda = x;}
00429 inline void StHbtV0::SetcTauK0Short( float x){mCTauK0Short = x;}
00430 inline void StHbtV0::SetptV0( float x){mPtV0 = x;}
00431 inline void StHbtV0::SetptotV0( float x){mPtotV0 = x;}
00432 inline void StHbtV0::SetptPos( float x){mPtPos = x;}
00433 inline void StHbtV0::SetptotPos( float x){mPtotPos = x;}
00434 inline void StHbtV0::SetptNeg( float x){ mPtNeg= x;}
00435 inline void StHbtV0::SetptotNeg( float x){ mPtotNeg= x;}
00436 inline void StHbtV0::SetidNeg(const unsigned short& s){ mKeyNeg= s;}
00437 inline void StHbtV0::SetidPos(const unsigned short& s){ mKeyPos= s;}
00438 inline void StHbtV0::SetkeyNeg(const unsigned short& s){ mKeyNeg= s;}
00439 inline void StHbtV0::SetkeyPos(const unsigned short& s){ mKeyPos= s;}
00440 inline void StHbtV0::SettpcHitsPos(const int& i){mTpcHitsPos=i;}
00441 inline void StHbtV0::SettpcHitsNeg(const int& i){mTpcHitsNeg=i;}
00442 inline void StHbtV0::SetdedxNeg(float x){mDedxNeg=x;}
00443 inline void StHbtV0::SeterrdedxNeg(float x){mErrDedxNeg=x;}
00444 inline void StHbtV0::SetlendedxNeg(float x){mLenDedxNeg=x;}
00445 inline void StHbtV0::SetdedxPos(float x){mDedxPos=x;}
00446 inline void StHbtV0::SeterrdedxPos(float x){mErrDedxPos=x;}
00447 inline void StHbtV0::SetlendedxPos(float x){mLenDedxPos=x;}
00448 inline void StHbtV0::SetprimaryVertex(const StHbtThreeVector v) { mPrimaryVertex = v; }
00449 #endif
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467