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 #ifndef ST_HBT_THPAIR_DOUBLE_GAUSS_HH
00030 #define ST_HBT_THPAIR_DOUBLE_GAUSS_HH
00031
00032 #include "TRandom2.h"
00033
00034 #include "StHbtMaker/Infrastructure/StHbtPair.hh"
00035 #include "StHbtMaker/Base/StHbtThPair.hh"
00036 #include "StHbtMaker/ThCorrFctn/StHbtMomRes.hh"
00037 #include "StHbtMaker/ThCorrFctn/StHbtSmearedHiddenInfo.h"
00038 #include "StHbtMaker/ThCorrFctn/StHbtEvtGenHiddenInfo.hh"
00039 #include "StHbtMaker/ThCorrFctn/StHbtShiftedHiddenInfo.h"
00040
00041 enum RefFrameDG{RCMSDG,LCMSDG,PRFDG};
00042 enum HiddenInfoType{EVTGEN,SMEAR,SHIFT};
00043
00044 class StHbtThPairDoubleGauss : public StHbtThPair{
00045
00046
00047 public:
00048 StHbtThPairDoubleGauss();
00049 virtual ~StHbtThPairDoubleGauss();
00050 virtual void Set(const StHbtPair* aPair);
00051
00052 void SetSizes(double aXYZ1, double aT1, double aXYZ2, double aT2);
00053 void SetSizes(double aX1,double aY1,double aZ1, double aT1,double aX2,double aY2,double aZ2, double aT2);
00054 void SetSize1(double aXYZ,double aT );
00055 void SetSize1(double aX,double aY,double aZ, double aT);
00056 void SetSize2(double aXYZ,double aT );
00057 void SetSize2(double aX,double aY,double aZ, double aT);
00058 void SetPositionShift(double aX, double aY, double aZ, double aT);
00059 void SetFirstProb(double amProb);
00060 void UseHiddenMomentum();
00061 void UseParticleMomentum();
00062
00063 void UseHiddenPid();
00064 void UseFixedPid( int const tPid1, double const tMass1);
00065 void UseFixedPid( int const tPid1,double const tMass1, int const tPid2,double const tMass2 );
00066
00067 void SetBoostRCMS(double aPlab,double aMBeam, double aMTarget);
00068
00069 void SetRCMS();
00070 void SetLCMS();
00071 void SetPRF();
00072 void SetCoreHalo();
00073 void SetTwoSources();
00074 void SetRadialGaus();
00075 void SetPRFGaus();
00076
00077 void SetResolutionMult(const double mult);
00078 void SetMomentumShift(const double shift);
00079
00080 void UseSmearedHiddenInfo();
00081 void UseShiftedHiddenInfo();
00082 void UseEvtGenHiddenInfo();
00083 void Write();
00084
00085
00086 protected:
00087 TRandom2 mRand;
00088 bool mUseHidMom;
00089 bool mUseHidPid;
00090 bool mCoreHalo;
00091 double mSizeX1,mSizeY1,mSizeZ1,mSizeX2,mSizeY2,mSizeZ2;
00092 double mTime1,mTime2;
00093 double mXShift, mYShift, mZShift, mTShift;
00094 double mProb1;
00095 RefFrameDG mRef;
00096 double mBetaRCMS;
00097 double mGammaRCMS;
00098 double mResMult;
00099 double mShift;
00100 HiddenInfoType mHiddenInfoType;
00101
00102 StHbtLorentzVector mPos1;
00103 StHbtLorentzVector mPos2;
00104
00105 StHbtLorentzVector mMom1;
00106 StHbtLorentzVector mMom2;
00107
00108 StHbt3DHisto* mPosDist1;
00109 StHbt3DHisto* mPosDist2;
00110 StHbt2DHisto* mPosPtDist1;
00111 StHbt2DHisto* mPosPtDist2;
00112 StHbt1DHisto* mTDist1;
00113 StHbt1DHisto* mTDist2;
00114
00115 double mMassSq1,mMassSq2;
00116
00117
00118 void SetMomentum_PID( const StHbtPair* );
00119 void SetPosition( const StHbtPair* );
00120 void BoostPosition();
00121 StHbtLorentzVector *GenerateFreezeOut(int partno);
00122
00123 #ifdef __ROOT__
00124 ClassDef(StHbtThPairDoubleGauss,1)
00125 #endif
00126 };
00127
00128 #endif