StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHbtThPairDoubleGauss.h
1 /***************************************************************************
2  *
3  *
4  *
5  * Author: Laurent Conin, Fabrice Retiere, Subatech, France
6  * Adam Kisiel, Warsaw University of Technology
7  ***************************************************************************
8  *
9  * Description : ThPair wich return :
10  * RealMomentum : HiddenInfo Momentum or Particle Momentum
11  * according to
12  * UseHiddenMomentum()/ UseParticleMomentum()
13  * EmPoint : EmPoint is distributed randomly in a Double
14  * Gaussian distribution.Size is fixed by SetSize1()
15  * SetSize2() and
16  * Ref Frame is fixed by SetRCMS()...
17  * The probability that the particle comes from the
18  * first source is set by SetProb1().
19  * Pid : to be fixed
20  * MeasMomentum : Particle Momentum
21  *
22  *
23  ***************************************************************************
24  *
25  *
26  *
27  ***************************************************************************/
28 
29 #ifndef ST_HBT_THPAIR_DOUBLE_GAUSS_HH
30 #define ST_HBT_THPAIR_DOUBLE_GAUSS_HH
31 
32 #include "TRandom2.h"
33 
34 #include "StHbtMaker/Infrastructure/StHbtPair.hh"
35 #include "StHbtMaker/Base/StHbtThPair.hh"
36 #include "StHbtMaker/ThCorrFctn/StHbtMomRes.hh"
37 #include "StHbtMaker/ThCorrFctn/StHbtSmearedHiddenInfo.h"
38 #include "StHbtMaker/ThCorrFctn/StHbtEvtGenHiddenInfo.hh"
39 #include "StHbtMaker/ThCorrFctn/StHbtShiftedHiddenInfo.h"
40 
41 enum RefFrameDG{RCMSDG,LCMSDG,PRFDG};
42 enum HiddenInfoType{EVTGEN,SMEAR,SHIFT};
43 
45 
46 
47 public:
49  virtual ~StHbtThPairDoubleGauss();
50  virtual void Set(const StHbtPair* aPair);
51 
52  void SetSizes(double aXYZ1, double aT1, double aXYZ2, double aT2);
53  void SetSizes(double aX1,double aY1,double aZ1, double aT1,double aX2,double aY2,double aZ2, double aT2);
54  void SetSize1(double aXYZ,double aT );
55  void SetSize1(double aX,double aY,double aZ, double aT);
56  void SetSize2(double aXYZ,double aT );
57  void SetSize2(double aX,double aY,double aZ, double aT);
58  void SetPositionShift(double aX, double aY, double aZ, double aT);
59  void SetFirstProb(double amProb);
60  void UseHiddenMomentum();
61  void UseParticleMomentum();
62 
63  void UseHiddenPid();
64  void UseFixedPid( int const tPid1, double const tMass1);
65  void UseFixedPid( int const tPid1,double const tMass1, int const tPid2,double const tMass2 );
66 
67  void SetBoostRCMS(double aPlab,double aMBeam, double aMTarget);
68 
69  void SetRCMS();
70  void SetLCMS();
71  void SetPRF();
72  void SetCoreHalo();
73  void SetTwoSources();
74  void SetRadialGaus();
75  void SetPRFGaus();
76 
77  void SetResolutionMult(const double mult);
78  void SetMomentumShift(const double shift);
79 
80  void UseSmearedHiddenInfo();
81  void UseShiftedHiddenInfo();
82  void UseEvtGenHiddenInfo();
83  void Write();
84 
85 
86  protected:
87  TRandom2 mRand;
88  bool mUseHidMom;
89  bool mUseHidPid;
90  bool mCoreHalo;
91  double mSizeX1,mSizeY1,mSizeZ1,mSizeX2,mSizeY2,mSizeZ2;
92  double mTime1,mTime2;
93  double mXShift, mYShift, mZShift, mTShift;
94  double mProb1;
95  RefFrameDG mRef;
96  double mBetaRCMS;
97  double mGammaRCMS;
98  double mResMult;
99  double mShift;
100  HiddenInfoType mHiddenInfoType;
101 
102  StHbtLorentzVector mPos1;
103  StHbtLorentzVector mPos2;
104 
105  StHbtLorentzVector mMom1; //because StHbtParticle.FourMomentum() is not a ref
106  StHbtLorentzVector mMom2;
107 
108  StHbt3DHisto* mPosDist1;
109  StHbt3DHisto* mPosDist2;
110  StHbt2DHisto* mPosPtDist1;
111  StHbt2DHisto* mPosPtDist2;
112  StHbt1DHisto* mTDist1;
113  StHbt1DHisto* mTDist2;
114 
115  double mMassSq1,mMassSq2;
116 
117  // 3 protected Step called from Set(...) public function member
118  void SetMomentum_PID( const StHbtPair* );
119  void SetPosition( const StHbtPair* );
120  void BoostPosition();
121  StHbtLorentzVector *GenerateFreezeOut(int partno);
122 
123 #ifdef __ROOT__
124  ClassDef(StHbtThPairDoubleGauss,1)
125 #endif
126 };
127 
128 #endif