12 #ifndef YKPLongitudinal_hh
13 #define YKPLongitudinal_hh
15 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
16 #include "StHbtMaker/Infrastructure/StHbtCoulomb.h"
17 #include "StHbtMaker/Base/StHbtPairCut.h"
23 YKPLongitudinal(TString ctype, TString frame,
const int& nbins,
const float& QLo,
const float& QHi,
24 const int& nKtbins,
const double& ktMin,
const double& ktMax,
25 const int& nYbins,
const double& YMin,
const double& YMax,
26 const int& nbinsQINV = 100,
const float& QLoQINV = 0.0,
const float& QHiQINV = 0.2 ) ;
29 virtual StHbtString Report() ;
31 virtual void AddRealPair(
const StHbtPair*) ;
32 virtual void AddMixedPair(
const StHbtPair*) ;
34 virtual void Finish() ;
37 StHbt3DHisto* Numerator(
const int ktBin,
const int yBin ) ;
38 StHbt3DHisto* Denominator(
const int ktBin,
const int yBin ) ;
39 StHbt3DHisto* Ratio(
const int ktBin,
const int yBin ) ;
40 StHbt1DHisto* QinvNumerator(
const int ktBin,
const int yBin ) ;
41 StHbt1DHisto* QinvDenominator(
const int ktBin,
const int yBin ) ;
42 StHbt1DHisto* QinvRatio(
const int ktBin,
const int yBin ) ;
48 void SetNormRangeLo(
float qLo) ;
49 void SetNormRangeHi(
float qHi) ;
50 float GetNormRangeLo() ;
51 float GetNormRangeHi() ;
52 double GetNorm(
const int ktBin,
const int yBin ) ;
60 StHbt3DHisto* mNumerator ;
61 StHbt3DHisto* mDenominator ;
62 StHbt3DHisto* mRatio ;
84 unsigned long int* mNumRealsNorm ;
85 unsigned long int* mNumMixedNorm ;
97 inline StHbt3DHisto* YKPLongitudinal::Numerator(
const int ktBin,
const int yBin) {
return &mNumerator[(ktBin-1)+(yBin-1)*mNumberKtBins];}
98 inline StHbt3DHisto* YKPLongitudinal::Denominator(
const int ktBin,
const int yBin) {
return &mDenominator[(ktBin-1)+(yBin-1)*mNumberKtBins];}
99 inline StHbt3DHisto* YKPLongitudinal::Ratio(
const int ktBin,
const int yBin) {
return &mRatio[(ktBin-1)+(yBin-1)*mNumberKtBins];}
100 inline StHbt1DHisto* YKPLongitudinal::QinvNumerator(
const int ktBin,
const int yBin) {
return &mQinvNumerator[(ktBin-1)+(yBin-1)*mNumberKtBins];}
101 inline StHbt1DHisto* YKPLongitudinal::QinvDenominator(
const int ktBin,
const int yBin){
return &mQinvDenominator[(ktBin-1)+(yBin-1)*mNumberKtBins];}
102 inline StHbt1DHisto* YKPLongitudinal::QinvRatio(
const int ktBin,
const int yBin) {
return &mQinvRatio[(ktBin-1)+(yBin-1)*mNumberKtBins];}
105 inline void YKPLongitudinal::SetNormRangeLo(
float qLo){mQinvNormLo = qLo;}
106 inline void YKPLongitudinal::SetNormRangeHi(
float qHi){mQinvNormHi = qHi;}
107 inline float YKPLongitudinal::GetNormRangeLo(){
return mQinvNormLo;}
108 inline float YKPLongitudinal::GetNormRangeHi(){
return mQinvNormHi;}
109 inline double YKPLongitudinal::GetNorm(
const int ktBin,
const int yBin){
return (
double)mNumRealsNorm[ktBin+yBin*mNumberKtBins]/(double)mNumMixedNorm[ktBin+yBin*mNumberKtBins];}
110 inline void YKPLongitudinal::SetCoulombCorrection(
StHbtCoulomb* Correction){mCorrection = Correction;}