StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
BPLCMSFrame3DCorrFctn_SIM.h
1 /***************************************************************************
2  *
3  * $Id: BPLCMSFrame3DCorrFctn_SIM.h,v 1.3 2001/05/23 00:19:05 lisa 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  * This is a SIMULATION/TESTING CORRELATION FUNCTION CLASS!!
10  * This one does 3D Bertsch-Pratt decomposition in the LCMS frame
11  *
12  ***************************************************************************
13  *
14  * $Log: BPLCMSFrame3DCorrFctn_SIM.h,v $
15  * Revision 1.3 2001/05/23 00:19:05 lisa
16  * Add in Smearing classes and methods needed for momentum resolution studies and correction
17  *
18  * Revision 1.2 2000/10/05 23:08:59 lisa
19  * Added kT-dependent radii to mixed-event simulator AND implemented AverageSeparation Cut and CorrFctn
20  *
21  * Revision 1.1 2000/09/14 18:36:53 lisa
22  * Added Qinv and ExitSep pair cuts and BPLCMSFrame3DCorrFctn_SIM CorrFctn
23  *
24  *
25  **************************************************************************/
26 
27 #ifndef BPLCMSFrame3DCorrFctn_SIM_hh
28 #define BPLCMSFrame3DCorrFctn_SIM_hh
29 
30 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
31 #include "StHbtMaker/Infrastructure/StHbtCoulomb.h"
32 #include "StHbtMaker/Base/StHbtPairCut.h"
33 //#include "StHbtMaker/Infrastructure/StHbtHisto.hh"
34 
35 class StHbtSmearPair;
36 
38 public:
39  BPLCMSFrame3DCorrFctn_SIM(char* title, const int& nbins, const float& QLo, const float& QHi);
40  virtual ~BPLCMSFrame3DCorrFctn_SIM();
41 
42  virtual StHbtString Report();
43  virtual void AddRealPair(const StHbtPair*);
44  virtual void AddMixedPair(const StHbtPair*);
45 
46  virtual void Finish();
47 
48  StHbt3DHisto* Numerator();
49  StHbt3DHisto* Denominator();
50  StHbt3DHisto* Ratio();
51 
52  StHbt2DHisto* ResolutionPlot(int index);
53 
54  // here are get and set for the range over which the correlation function
55  // is normalized (in Qinv). The range is set to 0.15..0.18 in the constuctor
56  // by default, but the Set's below override this
57  void SetNormRangeLo(float qLo);
58  void SetNormRangeHi(float qHi);
59  float GetNormRangeLo();
60  float GetNormRangeHi();
61 
62  void SetCoulombCorrection(StHbtCoulomb* Correction);
63 
64  void SetSpecificPairCut(StHbtPairCut*);
65 
66  void SetLambda(float lam);
67  void SetRout(float Rout);
68  void SetRside(float Rside);
69  void SetRlong(float Rlong);
70 
71  void SetRoutAlpha(float alpha);
72  void SetRsideAlpha(float alpha);
73  void SetRlongAlpha(float alpha);
74 
75 
76  void SetSmearPair(StHbtSmearPair* smearer);
77 
78 private:
79  StHbt3DHisto* mNumerator;
80  StHbt3DHisto* mDenominator;
81  StHbt3DHisto* mRatio;
82 
83  StHbtPairCut* mPairCut;
84 
85  // upper and lower bounds of Qinv region where to do normalization
86  float mQinvNormLo;
87  float mQinvNormHi;
88 
89  // and here are the number of pairs in that region...
90  unsigned long int mNumRealsNorm;
91  unsigned long int mNumMixedNorm;
92 
93  StHbtCoulomb* mCorrection;
94 
95  float mLambda;
96  float mRout2;
97  float mRside2;
98  float mRlong2;
99 
100  // following describe evolution in radii with mT
101  // the evolution model is R = R(0)*mt^alpha
102  // alpha is set zero by default, so if you don't change
103  // them, then R = R(0) = what you input for all mT
104  float mRout_alpha;
105  float mRside_alpha;
106  float mRlong_alpha;
107 
108 
109  StHbtSmearPair* mSmearPair; // for putting in detector resolution
110 
111  StHbt2DHisto* mResolutionHistos[4];
112 
113  bool mToggleNumDen;
114 
115 #ifdef __ROOT__
116  ClassDef(BPLCMSFrame3DCorrFctn_SIM, 0)
117 #endif
118 };
119 
120 inline StHbt2DHisto* BPLCMSFrame3DCorrFctn_SIM::ResolutionPlot(int index){return mResolutionHistos[index];}
121 
122 inline void BPLCMSFrame3DCorrFctn_SIM::SetSmearPair(StHbtSmearPair* smearer){mSmearPair = smearer;}
123 
124 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn_SIM::Numerator(){return mNumerator;}
125 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn_SIM::Denominator(){return mDenominator;}
126 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn_SIM::Ratio(){return mRatio;}
127 inline void BPLCMSFrame3DCorrFctn_SIM::SetNormRangeLo(float qLo){mQinvNormLo = qLo;}
128 inline void BPLCMSFrame3DCorrFctn_SIM::SetNormRangeHi(float qHi){mQinvNormHi = qHi;}
129 inline float BPLCMSFrame3DCorrFctn_SIM::GetNormRangeLo(){return mQinvNormLo;}
130 inline float BPLCMSFrame3DCorrFctn_SIM::GetNormRangeHi(){return mQinvNormHi;}
131 inline void BPLCMSFrame3DCorrFctn_SIM::SetCoulombCorrection(StHbtCoulomb* Correction){mCorrection = Correction;}
132 inline void BPLCMSFrame3DCorrFctn_SIM::SetSpecificPairCut(StHbtPairCut* pc){mPairCut=pc;}
133 
134 inline void BPLCMSFrame3DCorrFctn_SIM::SetLambda(float lam){mLambda = lam;}
135 inline void BPLCMSFrame3DCorrFctn_SIM::SetRout(float Rout){mRout2 = Rout*Rout;}
136 inline void BPLCMSFrame3DCorrFctn_SIM::SetRside(float Rside){mRside2 = Rside*Rside;}
137 inline void BPLCMSFrame3DCorrFctn_SIM::SetRlong(float Rlong){mRlong2 = Rlong*Rlong;}
138 
139 inline void BPLCMSFrame3DCorrFctn_SIM::SetRoutAlpha(float alpha){mRout_alpha = alpha;}
140 inline void BPLCMSFrame3DCorrFctn_SIM::SetRsideAlpha(float alpha){mRside_alpha = alpha;}
141 inline void BPLCMSFrame3DCorrFctn_SIM::SetRlongAlpha(float alpha){mRlong_alpha = alpha;}
142 
143 
144 
145 #endif
146