StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
BPLCMSFrame3DCorrFctn.h
1 /***************************************************************************
2  *
3  * $Id: BPLCMSFrame3DCorrFctn.h,v 1.5 2002/06/07 22:51:39 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 one does 3D Bertsch-Pratt decomposition in the LCMS frame
10  *
11  ***************************************************************************
12  *
13  * $Log: BPLCMSFrame3DCorrFctn.h,v $
14  * Revision 1.5 2002/06/07 22:51:39 lisa
15  * Widely used BPLCMSFrame3DCorrFctn class now accumulates UNcorrected denominator and has a WriteOutHistos method
16  *
17  * Revision 1.4 2001/05/23 00:19:04 lisa
18  * Add in Smearing classes and methods needed for momentum resolution studies and correction
19  *
20  * Revision 1.3 2000/10/26 19:48:50 rcwells
21  * Added functionality for Coulomb correction of <qInv> in 3D correltions
22  *
23  * Revision 1.2 2000/09/14 18:36:53 lisa
24  * Added Qinv and ExitSep pair cuts and BPLCMSFrame3DCorrFctn_SIM CorrFctn
25  *
26  * Revision 1.1 2000/08/17 20:48:39 lisa
27  * Adding correlationfunction in LCMS frame
28  *
29  *
30  *
31  **************************************************************************/
32 
33 #ifndef BPLCMSFrame3DCorrFctn_hh
34 #define BPLCMSFrame3DCorrFctn_hh
35 
36 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
37 #include "StHbtMaker/Infrastructure/StHbtCoulomb.h"
38 #include "StHbtMaker/Base/StHbtPairCut.h"
39 //#include "StHbtMaker/Infrastructure/StHbtHisto.hh"
40 
41 #include "StHbtMaker/Infrastructure/StHbtSmearPair.h"
42 
44 public:
45  BPLCMSFrame3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi);
46  virtual ~BPLCMSFrame3DCorrFctn();
47 
48  virtual StHbtString Report();
49  virtual void AddRealPair(const StHbtPair*);
50  virtual void AddMixedPair(const StHbtPair*);
51 
52  virtual void Finish();
53 
54  StHbt3DHisto* Numerator();
55  StHbt3DHisto* Denominator();
56  StHbt3DHisto* UncorrectedDenominator();
57  StHbt3DHisto* Ratio();
58  StHbt3DHisto* QinvHisto();
59 
60  // here are get and set for the range over which the correlation function
61  // is normalized (in Qinv). The range is set to 0.15..0.18 in the constuctor
62  // by default, but the Set's below override this
63  void SetNormRangeLo(float qLo);
64  void SetNormRangeHi(float qHi);
65  float GetNormRangeLo();
66  float GetNormRangeHi();
67 
68  void WriteOutHistos();
69 
70  void SetCoulombCorrection(StHbtCoulomb* Correction);
71 
72  void SetSpecificPairCut(StHbtPairCut*);
73 
74  void SetSmearPair(StHbtSmearPair*);
75  void SetRout(double guess);
76  void SetRside(double guess);
77  void SetRlong(double guess);
78  void SetLambda(double guess);
79 
80 
81  // here are a whole bunch of histos that get filled if we do resolution correction
82  StHbt3DHisto* mIDNumHisto;
83  StHbt3DHisto* mIDDenHisto;
84  StHbt3DHisto* mIDRatHisto;
85  //
86  StHbt3DHisto* mSMNumHisto;
87  StHbt3DHisto* mSMDenHisto;
88  StHbt3DHisto* mSMRatHisto;
89  //
90  StHbt3DHisto* mCorrectionHisto;
91  StHbt3DHisto* mCorrCFHisto;
92 
93 
94 
95 
96 private:
97  StHbt3DHisto* mNumerator;
98  StHbt3DHisto* mDenominator;
99  StHbt3DHisto* mUncorrectedDenominator;
100  StHbt3DHisto* mRatio;
101  StHbt3DHisto* mQinvHisto;
102 
103  // for resolution correction
104  StHbtSmearPair* mSmearPair;
105  double mLambda;
106  double mRout2;
107  double mRside2;
108  double mRlong2;
109 
110  StHbtPairCut* mPairCut;
111 
112  // upper and lower bounds of Qinv region where to do normalization
113  float mQinvNormLo;
114  float mQinvNormHi;
115 
116  // and here are the number of pairs in that region...
117  unsigned long int mNumRealsNorm;
118  unsigned long int mNumMixedNorm;
119 
120  StHbtCoulomb* mCorrection;
121 
122 
123 #ifdef __ROOT__
124  ClassDef(BPLCMSFrame3DCorrFctn, 1)
125 #endif
126 };
127 
128 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Numerator(){return mNumerator;}
129 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Denominator(){return mDenominator;}
130 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::UncorrectedDenominator(){return mUncorrectedDenominator;}
131 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Ratio(){return mRatio;}
132 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::QinvHisto(){return mQinvHisto;}
133 inline void BPLCMSFrame3DCorrFctn::SetNormRangeLo(float qLo){mQinvNormLo = qLo;}
134 inline void BPLCMSFrame3DCorrFctn::SetNormRangeHi(float qHi){mQinvNormHi = qHi;}
135 inline float BPLCMSFrame3DCorrFctn::GetNormRangeLo(){return mQinvNormLo;}
136 inline float BPLCMSFrame3DCorrFctn::GetNormRangeHi(){return mQinvNormHi;}
137 inline void BPLCMSFrame3DCorrFctn::SetCoulombCorrection(StHbtCoulomb* Correction){mCorrection = Correction;}
138 inline void BPLCMSFrame3DCorrFctn::SetSpecificPairCut(StHbtPairCut* pc){mPairCut=pc;}
139 inline void BPLCMSFrame3DCorrFctn::SetSmearPair(StHbtSmearPair* sp){mSmearPair = sp;}
140 
141 inline void BPLCMSFrame3DCorrFctn::SetRout(double r){mRout2 = r*r;}
142 inline void BPLCMSFrame3DCorrFctn::SetRside(double r){mRside2 = r*r;}
143 inline void BPLCMSFrame3DCorrFctn::SetRlong(double r){mRlong2 = r*r;}
144 inline void BPLCMSFrame3DCorrFctn::SetLambda(double l){mLambda = l;}
145 
146 #endif
147