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 #ifndef BPLCMSFrame3DCorrFctn_hh
00034 #define BPLCMSFrame3DCorrFctn_hh
00035
00036 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
00037 #include "StHbtMaker/Infrastructure/StHbtCoulomb.h"
00038 #include "StHbtMaker/Base/StHbtPairCut.h"
00039
00040
00041 #include "StHbtMaker/Infrastructure/StHbtSmearPair.h"
00042
00043 class BPLCMSFrame3DCorrFctn : public StHbtCorrFctn {
00044 public:
00045 BPLCMSFrame3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi);
00046 virtual ~BPLCMSFrame3DCorrFctn();
00047
00048 virtual StHbtString Report();
00049 virtual void AddRealPair(const StHbtPair*);
00050 virtual void AddMixedPair(const StHbtPair*);
00051
00052 virtual void Finish();
00053
00054 StHbt3DHisto* Numerator();
00055 StHbt3DHisto* Denominator();
00056 StHbt3DHisto* UncorrectedDenominator();
00057 StHbt3DHisto* Ratio();
00058 StHbt3DHisto* QinvHisto();
00059
00060
00061
00062
00063 void SetNormRangeLo(float qLo);
00064 void SetNormRangeHi(float qHi);
00065 float GetNormRangeLo();
00066 float GetNormRangeHi();
00067
00068 void WriteOutHistos();
00069
00070 void SetCoulombCorrection(StHbtCoulomb* Correction);
00071
00072 void SetSpecificPairCut(StHbtPairCut*);
00073
00074 void SetSmearPair(StHbtSmearPair*);
00075 void SetRout(double guess);
00076 void SetRside(double guess);
00077 void SetRlong(double guess);
00078 void SetLambda(double guess);
00079
00080
00081
00082 StHbt3DHisto* mIDNumHisto;
00083 StHbt3DHisto* mIDDenHisto;
00084 StHbt3DHisto* mIDRatHisto;
00085
00086 StHbt3DHisto* mSMNumHisto;
00087 StHbt3DHisto* mSMDenHisto;
00088 StHbt3DHisto* mSMRatHisto;
00089
00090 StHbt3DHisto* mCorrectionHisto;
00091 StHbt3DHisto* mCorrCFHisto;
00092
00093
00094
00095
00096 private:
00097 StHbt3DHisto* mNumerator;
00098 StHbt3DHisto* mDenominator;
00099 StHbt3DHisto* mUncorrectedDenominator;
00100 StHbt3DHisto* mRatio;
00101 StHbt3DHisto* mQinvHisto;
00102
00103
00104 StHbtSmearPair* mSmearPair;
00105 double mLambda;
00106 double mRout2;
00107 double mRside2;
00108 double mRlong2;
00109
00110 StHbtPairCut* mPairCut;
00111
00112
00113 float mQinvNormLo;
00114 float mQinvNormHi;
00115
00116
00117 unsigned long int mNumRealsNorm;
00118 unsigned long int mNumMixedNorm;
00119
00120 StHbtCoulomb* mCorrection;
00121
00122
00123 #ifdef __ROOT__
00124 ClassDef(BPLCMSFrame3DCorrFctn, 1)
00125 #endif
00126 };
00127
00128 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Numerator(){return mNumerator;}
00129 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Denominator(){return mDenominator;}
00130 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::UncorrectedDenominator(){return mUncorrectedDenominator;}
00131 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::Ratio(){return mRatio;}
00132 inline StHbt3DHisto* BPLCMSFrame3DCorrFctn::QinvHisto(){return mQinvHisto;}
00133 inline void BPLCMSFrame3DCorrFctn::SetNormRangeLo(float qLo){mQinvNormLo = qLo;}
00134 inline void BPLCMSFrame3DCorrFctn::SetNormRangeHi(float qHi){mQinvNormHi = qHi;}
00135 inline float BPLCMSFrame3DCorrFctn::GetNormRangeLo(){return mQinvNormLo;}
00136 inline float BPLCMSFrame3DCorrFctn::GetNormRangeHi(){return mQinvNormHi;}
00137 inline void BPLCMSFrame3DCorrFctn::SetCoulombCorrection(StHbtCoulomb* Correction){mCorrection = Correction;}
00138 inline void BPLCMSFrame3DCorrFctn::SetSpecificPairCut(StHbtPairCut* pc){mPairCut=pc;}
00139 inline void BPLCMSFrame3DCorrFctn::SetSmearPair(StHbtSmearPair* sp){mSmearPair = sp;}
00140
00141 inline void BPLCMSFrame3DCorrFctn::SetRout(double r){mRout2 = r*r;}
00142 inline void BPLCMSFrame3DCorrFctn::SetRside(double r){mRside2 = r*r;}
00143 inline void BPLCMSFrame3DCorrFctn::SetRlong(double r){mRlong2 = r*r;}
00144 inline void BPLCMSFrame3DCorrFctn::SetLambda(double l){mLambda = l;}
00145
00146 #endif
00147