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
00034
00035 #include "StHbtMaker/CorrFctn/NonIdReal3DCorrFctn.h"
00036
00037 #include <cstdio>
00038
00039 #ifdef __ROOT__
00040 ClassImp(NonIdReal3DCorrFctn)
00041 #endif
00042
00043
00044 NonIdReal3DCorrFctn::NonIdReal3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi){
00045
00046
00047 mQinvNormLo = 0.15;
00048 mQinvNormHi = 0.18;
00049 mNumRealsNorm = 0;
00050 mNumMixedNorm = 0;
00051
00052
00053
00054 char TitNum[100] = "Num";
00055 strcat(TitNum,title);
00056 mNumerator = new StHbt3DHisto(TitNum,title,nbins,QLo,QHi,nbins,QLo,QHi,nbins,QLo,QHi);
00057
00058 char TitDen[100] = "Den";
00059 strcat(TitDen,title);
00060 mDenominator = new StHbt3DHisto(TitDen,title,nbins,QLo,QHi,nbins,QLo,QHi,nbins,QLo,QHi);
00061
00062 char TitRat[100] = "Rat";
00063 strcat(TitRat,title);
00064 mRatio = new StHbt3DHisto(TitRat,title,nbins,QLo,QHi,nbins,QLo,QHi,nbins,QLo,QHi);
00065
00066 char TitQinv[100] = "Qinv";
00067 strcat(TitQinv,title);
00068 mQinvHisto = new StHbt3DHisto(TitQinv,title,nbins,QLo,QHi,nbins,QLo,QHi,nbins,QLo,QHi);
00069
00070
00071 mNumerator->Sumw2();
00072 mDenominator->Sumw2();
00073 mRatio->Sumw2();
00074
00075 }
00076
00077
00078 NonIdReal3DCorrFctn::~NonIdReal3DCorrFctn(){
00079 delete mNumerator;
00080 delete mDenominator;
00081 delete mRatio;
00082 delete mQinvHisto;
00083 }
00084
00085 void NonIdReal3DCorrFctn::Finish(){
00086
00087 double NumFact,DenFact;
00088 if ((mNumRealsNorm !=0) && (mNumMixedNorm !=0)){
00089 NumFact = double(mNumRealsNorm);
00090 DenFact = double(mNumMixedNorm);
00091 }
00092
00093
00094
00095 else{
00096 cout << "Warning! - no normalization constants defined - I do the best I can..." << endl;
00097 int nbins = mNumerator->GetNbinsX();
00098 int half_way = nbins/2;
00099 NumFact = mNumerator->Integral(half_way,nbins,half_way,nbins,half_way,nbins);
00100 DenFact = mDenominator->Integral(half_way,nbins,half_way,nbins,half_way,nbins);
00101 }
00102
00103 mRatio->Divide(mNumerator,mDenominator,DenFact,NumFact);
00104 mQinvHisto->Divide(mDenominator);
00105 }
00106
00107
00108 StHbtString NonIdReal3DCorrFctn::Report(){
00109 string stemp = "Labframe Bertsch-Pratt 3D Correlation Function Report:\n";
00110 char ctemp[100];
00111 sprintf(ctemp,"Number of entries in numerator:\t%E\n",mNumerator->GetEntries());
00112 stemp += ctemp;
00113 sprintf(ctemp,"Number of entries in denominator:\t%E\n",mDenominator->GetEntries());
00114 stemp += ctemp;
00115 sprintf(ctemp,"Number of entries in ratio:\t%E\n",mRatio->GetEntries());
00116 stemp += ctemp;
00117 sprintf(ctemp,"Normalization region in Qinv was:\t%E\t%E\n",mQinvNormLo,mQinvNormHi);
00118 stemp += ctemp;
00119 sprintf(ctemp,"Number of pairs in Normalization region was:\n");
00120 stemp += ctemp;
00121 sprintf(ctemp,"In numerator:\t%lu\t In denominator:\t%lu\n",mNumRealsNorm,mNumMixedNorm);
00122 stemp += ctemp;
00123
00124 stemp += ctemp;
00125
00126 StHbtString returnThis = stemp;
00127 return returnThis;
00128 }
00129
00130 void NonIdReal3DCorrFctn::AddRealPair(const StHbtPair* pair){
00131 double tKStar = 2*fabs(pair->KStar());
00132 double tKOut = pair->dKOut();
00133 double tKSide = pair->dKSide();
00134 double tKLong = pair->dKLong();
00135
00136
00137 if ((tKStar < mQinvNormHi) && (tKStar > mQinvNormLo)) mNumRealsNorm++;
00138
00139
00140
00141
00142 mNumerator->Fill(tKOut,tKSide,tKLong);
00143
00144 }
00145
00146
00147 void NonIdReal3DCorrFctn::AddMixedPair(const StHbtPair* pair){
00148 double tKStar = 2*fabs(pair->KStar());
00149 double tKOut = pair->dKOut();
00150 double tKSide = pair->dKSide();
00151 double tKLong = pair->dKLong();
00152
00153 double weight=1.0;
00154
00155
00156 if ((tKStar < mQinvNormHi) && (tKStar > mQinvNormLo)) mNumMixedNorm++;
00157
00158
00159
00160
00161 mDenominator->Fill(tKOut,tKSide,tKLong,weight);
00162 mQinvHisto->Fill(tKOut,tKSide,tKLong,tKStar);
00163 }
00164
00165
00166 void NonIdReal3DCorrFctn::Write()
00167 {
00168 mNumerator->Write();
00169 mDenominator->Write();
00170 mRatio->Write();
00171 mQinvHisto->Write();
00172 }
00173