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 #include "StHbtMaker/CorrFctn/QinvCorrFctnKt.h"
00028
00029 #include <cstdio>
00030
00031 #ifdef __ROOT__
00032 ClassImp(QinvCorrFctnKt)
00033 #endif
00034
00035
00036 QinvCorrFctnKt::QinvCorrFctnKt(char* title, const int& nbins, const float& QinvLo, const float& QinvHi,
00037 const int& nCFs, const float& KtLo, const float& KtHi){
00038 mNumberCFs = nCFs;
00039 mKtMin = KtLo;
00040 mKtMax = KtHi;
00041 mDeltaKt = (mKtMax-mKtMin)/mNumberCFs;
00042
00043
00044 mNumerator = new StHbt1DHisto[mNumberCFs];
00045
00046
00047 mDenominator = new StHbt1DHisto[mNumberCFs];
00048
00049
00050 mRatio = new StHbt1DHisto[mNumberCFs];
00051
00052 char TitNum[100] = "Num";
00053 strcat(TitNum,title);
00054 char TitDen[100] = "Den";
00055 strcat(TitDen,title);
00056 char TitRat[100] = "Rat";
00057 strcat(TitRat,title);
00058
00059 for (int i=0; i<mNumberCFs; i++){
00060
00061 sprintf(TitNum,"NumQInvCFKtBin%d",i);
00062 mNumerator[i].SetName(TitNum);
00063 mNumerator[i].SetTitle(title);
00064 mNumerator[i].SetBins(nbins,QinvLo,QinvHi);
00065 mNumerator[i].SetDirectory(0);
00066 mNumerator[i].Sumw2();
00067
00068 sprintf(TitDen,"DenQInvCFKtBin%d",i);
00069 mDenominator[i].SetName(TitDen);
00070 mDenominator[i].SetTitle(title);
00071 mDenominator[i].SetBins(nbins,QinvLo,QinvHi);
00072 mDenominator[i].SetDirectory(0);
00073 mDenominator[i].Sumw2();
00074
00075 sprintf(TitRat,"RatQInvCFKtBin%d",i);
00076 mRatio[i].SetName(TitRat);
00077 mRatio[i].SetTitle(title);
00078 mRatio[i].SetBins(nbins,QinvLo,QinvHi);
00079 mRatio[i].SetDirectory(0);
00080 mRatio[i].Sumw2();
00081 }
00082 }
00083
00084 QinvCorrFctnKt::~QinvCorrFctnKt(){
00085 delete [] mNumerator;
00086 delete [] mDenominator;
00087 delete [] mRatio;
00088 }
00089
00090 void QinvCorrFctnKt::Finish(){
00091 for (int i=0; i<mNumberCFs; i++){
00092 mRatio[i].Divide(&mNumerator[i],&mDenominator[i],1.0,1.0);
00093 }
00094 }
00095
00096 StHbtString QinvCorrFctnKt::Report(){
00097 int mNumeratorEntries=0;
00098 int mDenominatorEntries=0;
00099 int mRatioEntries=0;
00100
00101 for (int i=0; i<mNumberCFs; i++){
00102 mNumeratorEntries += (int)mNumerator[i].GetEntries();
00103 mDenominatorEntries += (int)mDenominator[i].GetEntries();
00104 mRatioEntries += (int)mRatio[i].GetEntries();
00105 }
00106 string stemp = "Qinv Correlation Function Report:\n";
00107 char ctemp[100];
00108 sprintf(ctemp,"Number of entries in all numerators:\t%i\n",mNumeratorEntries);
00109 stemp += ctemp;
00110 sprintf(ctemp,"Number of entries in all denominators:\t%i\n",mDenominatorEntries);
00111 stemp += ctemp;
00112 sprintf(ctemp,"Number of entries in all ratios:\t%i\n",mRatioEntries);
00113 stemp += ctemp;
00114 StHbtString returnThis = stemp;
00115 return returnThis;
00116 }
00117
00118 void QinvCorrFctnKt::AddRealPair(const StHbtPair* pair){
00119 int mIndex = (int)(((fabs(pair->kT())-mKtMin)/mDeltaKt));
00120 if ((mIndex>=0)&&(mIndex<mNumberCFs)){
00121 mNumerator[mIndex].Fill(fabs(pair->qInv()),1.0);
00122 }
00123 }
00124
00125 void QinvCorrFctnKt::AddMixedPair(const StHbtPair* pair){
00126 int mIndex = (int)(((fabs(pair->kT())-mKtMin)/mDeltaKt));
00127 if ((mIndex>=0)&&(mIndex<mNumberCFs)){
00128 mDenominator[mIndex].Fill(fabs(pair->qInv()),1.0);
00129 }
00130 }
00131
00132