00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "StHbtMaker/CorrFctn/MinvLikeSignCorrFctn_MinvYPt.h"
00021 #include <cstdio>
00022
00023 #ifdef __ROOT__
00024 ClassImp(MinvLikeSignCorrFctn_MinvYPt)
00025 #endif
00026
00027
00028 MinvLikeSignCorrFctn_MinvYPt::MinvLikeSignCorrFctn_MinvYPt(char* title1, char* title2,
00029 const int& nxbins, const double& xLo, const double& xHi,
00030 const int& nybins, const double& yLo, const double& yHi,
00031 const int& nzbins, const double& zLo, const double& zHi,
00032 const double& m0){
00033
00034 mM0 = m0;
00035
00036 char theTitle1[100];
00037 char theTitle2[100];
00038 sprintf(theTitle2,"%s",title2);
00039
00040
00041 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_Num_%s",title1);
00042 mNumeratorPt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nybins,zLo,zHi);
00043
00044 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_MixedEventDen_%s",title1);
00045 mMixedEventDenominatorPt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00046
00047 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_PositiveDen_%s",title1);
00048 mPositiveDenominatorPt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00049
00050 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_NegativeDen_%s",title1);
00051 mNegativeDenominatorPt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00052
00053 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_MixedEventDif_%s",title1);
00054 mMixedEventDifferencePt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00055
00056 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYPt_LikeSignDif_%s",title1);
00057 mLikeSignDifferencePt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00058
00059
00060 mNumeratorPt->SetDirectory(0);
00061 mMixedEventDenominatorPt->SetDirectory(0);
00062 mPositiveDenominatorPt->SetDirectory(0);
00063 mNegativeDenominatorPt->SetDirectory(0);
00064 mMixedEventDifferencePt->SetDirectory(0);
00065 mLikeSignDifferencePt->SetDirectory(0);
00066
00067 mNumeratorPt->Sumw2();
00068 mMixedEventDenominatorPt->Sumw2();
00069 mPositiveDenominatorPt->Sumw2();
00070 mNegativeDenominatorPt->Sumw2();
00071 mMixedEventDifferencePt->Sumw2();
00072 mLikeSignDifferencePt->Sumw2();
00073
00074
00075 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_Num_%s",title1);
00076 mNumeratorMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nybins,zLo,zHi);
00077
00078 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_MixedEventDen_%s",title1);
00079 mMixedEventDenominatorMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00080
00081 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_PositiveDen_%s",title1);
00082 mPositiveDenominatorMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00083
00084 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_NegativeDen_%s",title1);
00085 mNegativeDenominatorMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00086
00087 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_MixedEventDif_%s",title1);
00088 mMixedEventDifferenceMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00089
00090 sprintf(theTitle1,"MinvLikeSignCorrFctn_MinvYMt_LikeSignDif_%s",title1);
00091 mLikeSignDifferenceMt = new StHbt3DHisto(theTitle1,theTitle2,nxbins,xLo,xHi,nybins,yLo,yHi, nzbins,zLo,zHi);
00092
00093
00094 mNumeratorMt->SetDirectory(0);
00095 mMixedEventDenominatorMt->SetDirectory(0);
00096 mPositiveDenominatorMt->SetDirectory(0);
00097 mNegativeDenominatorMt->SetDirectory(0);
00098 mMixedEventDifferenceMt->SetDirectory(0);
00099 mLikeSignDifferenceMt->SetDirectory(0);
00100
00101 mNumeratorMt->Sumw2();
00102 mMixedEventDenominatorMt->Sumw2();
00103 mPositiveDenominatorMt->Sumw2();
00104 mNegativeDenominatorMt->Sumw2();
00105 mMixedEventDifferenceMt->Sumw2();
00106 mLikeSignDifferenceMt->Sumw2();
00107
00108 }
00109
00110
00111 MinvLikeSignCorrFctn_MinvYPt::~MinvLikeSignCorrFctn_MinvYPt(){
00112 delete mNumeratorPt;
00113 delete mMixedEventDenominatorPt;
00114 delete mPositiveDenominatorPt;
00115 delete mNegativeDenominatorPt;
00116 delete mMixedEventDifferencePt;
00117 delete mLikeSignDifferencePt;
00118 delete mNumeratorMt;
00119 delete mMixedEventDenominatorMt;
00120 delete mPositiveDenominatorMt;
00121 delete mNegativeDenominatorMt;
00122 delete mMixedEventDifferenceMt;
00123 delete mLikeSignDifferenceMt;
00124 }
00125
00126 void MinvLikeSignCorrFctn_MinvYPt::Finish(){
00127 int NEvents = 1;
00128 if ( dynamic_cast<StHbtAnalysis*>( HbtAnalysis() ) ) {
00129 if ( dynamic_cast<mikesEventCut*>( ((StHbtAnalysis*)HbtAnalysis())->EventCut() ) )
00130 NEvents = ((mikesEventCut*)((StHbtAnalysis*)HbtAnalysis())->EventCut())->NEventsPassed();
00131 }
00132
00133 double NumeratorInt;
00134 double MixedEventDenominatorInt;
00135 double PositiveDenominatorInt;
00136 double NegativeDenominatorInt;
00137
00138 mNumeratorPt->Scale(1./NEvents);
00139 mMixedEventDenominatorPt->Scale(1./NEvents);
00140 mPositiveDenominatorPt->Scale(1./NEvents);
00141 mNegativeDenominatorPt->Scale(1./NEvents);
00142 mMixedEventDifferencePt->Scale(1./NEvents);
00143 mLikeSignDifferencePt->Scale(1./NEvents);
00144
00145
00146 NumeratorInt = mNumeratorPt->Integral();
00147 MixedEventDenominatorInt = mMixedEventDenominatorPt->Integral();
00148 PositiveDenominatorInt = mPositiveDenominatorPt->Integral();
00149 NegativeDenominatorInt = mNegativeDenominatorPt->Integral();
00150 mMixedEventDifferencePt->Add(mNumeratorPt,mMixedEventDenominatorPt,1.0,-1*NumeratorInt/MixedEventDenominatorInt);
00151 mLikeSignDifferencePt->Add(mNumeratorPt,mPositiveDenominatorPt,1.,-1.);
00152 mLikeSignDifferencePt->Add(mLikeSignDifferencePt,mNegativeDenominatorPt,1.,-1.);
00153
00154 mNumeratorMt->Scale(1./NEvents);
00155 mMixedEventDenominatorMt->Scale(1./NEvents);
00156 mPositiveDenominatorMt->Scale(1./NEvents);
00157 mNegativeDenominatorMt->Scale(1./NEvents);
00158 mMixedEventDifferenceMt->Scale(1./NEvents);
00159 mLikeSignDifferenceMt->Scale(1./NEvents);
00160
00161
00162 NumeratorInt = mNumeratorMt->Integral();
00163 MixedEventDenominatorInt = mMixedEventDenominatorMt->Integral();
00164 PositiveDenominatorInt = mPositiveDenominatorMt->Integral();
00165 NegativeDenominatorInt = mNegativeDenominatorMt->Integral();
00166 mMixedEventDifferenceMt->Add(mNumeratorMt,mMixedEventDenominatorMt,1.0,-1*NumeratorInt/MixedEventDenominatorInt);
00167 mLikeSignDifferenceMt->Add(mNumeratorMt,mPositiveDenominatorMt,1.,-1.);
00168 mLikeSignDifferenceMt->Add(mLikeSignDifferenceMt,mNegativeDenominatorMt,1.,-1.);
00169
00170 }
00171
00172 StHbtString MinvLikeSignCorrFctn_MinvYPt::Report(){
00173 string stemp = "MinvLikeSignCorrFctn_MinvYPt Report():\n";
00174 char ctemp[100];
00175 sprintf(ctemp,"Number of entries in numerator:\t%E\n",mNumeratorPt->GetEntries());
00176 stemp += ctemp;
00177 sprintf(ctemp,"Number of entries in mixed event denominator:\t%E\n",mMixedEventDenominatorPt->GetEntries());
00178 stemp += ctemp;
00179 sprintf(ctemp,"Number of entries in like sign positive denominator:\t%E\n",mPositiveDenominatorPt->GetEntries());
00180 stemp += ctemp;
00181 sprintf(ctemp,"Number of entries in like sign negative denominator:\t%E\n",mNegativeDenominatorPt->GetEntries());
00182 stemp += ctemp;
00183 sprintf(ctemp,"Number of entries in mixed event difference:\t%E\n",mMixedEventDifferencePt->GetEntries());
00184 stemp += ctemp;
00185 sprintf(ctemp,"Number of entries in like sign difference:\t%E\n",mLikeSignDifferencePt->GetEntries());
00186 stemp += ctemp;
00187 sprintf(ctemp,"Number of entries in numerator:\t%E\n",mNumeratorMt->GetEntries());
00188 stemp += ctemp;
00189 sprintf(ctemp,"Number of entries in mixed event denominator:\t%E\n",mMixedEventDenominatorMt->GetEntries());
00190 stemp += ctemp;
00191 sprintf(ctemp,"Number of entries in like sign positive denominator:\t%E\n",mPositiveDenominatorMt->GetEntries());
00192 stemp += ctemp;
00193 sprintf(ctemp,"Number of entries in like sign negative denominator:\t%E\n",mNegativeDenominatorMt->GetEntries());
00194 stemp += ctemp;
00195 sprintf(ctemp,"Number of entries in mixed event difference:\t%E\n",mMixedEventDifferenceMt->GetEntries());
00196 stemp += ctemp;
00197 sprintf(ctemp,"Number of entries in like sign difference:\t%E\n",mLikeSignDifferenceMt->GetEntries());
00198 stemp += ctemp;
00199 StHbtString returnThis = stemp;
00200 return returnThis;
00201 }
00202
00203 inline void MinvLikeSignCorrFctn_MinvYPt::AddRealPair(const StHbtPair* pair){
00204 mMinv = pair->mInv(); mY = pair->fourMomentumSum().rapidity();
00205 mPt = pair->fourMomentumSum().vect().perp(); mMt = ::sqrt(::pow(mMinv,2.)+::pow(mPt,2.));
00206 mNumeratorPt->Fill(mMinv,mY,mPt);
00207 mNumeratorMt->Fill(mMinv,mY,mMt-mM0);
00208 }
00209
00210 inline void MinvLikeSignCorrFctn_MinvYPt::AddMixedPair(const StHbtPair* pair){
00211 mMinv = pair->mInv(); mY = pair->fourMomentumSum().rapidity();
00212 mPt = pair->fourMomentumSum().vect().perp(); mMt = ::sqrt(::pow(mMinv,2.)+::pow(mPt,2.));
00213 mMixedEventDenominatorPt->Fill(mMinv,mY,mPt);
00214 mMixedEventDenominatorMt->Fill(mMinv,mY,mMt-mM0);
00215 }
00216
00217 inline void MinvLikeSignCorrFctn_MinvYPt::AddLikeSignPositivePair(const StHbtPair* pair){
00218 mMinv = pair->mInv(); mY = pair->fourMomentumSum().rapidity();
00219 mPt = pair->fourMomentumSum().vect().perp(); mMt = ::sqrt(::pow(mMinv,2.)+::pow(mPt,2.));
00220 mPositiveDenominatorPt->Fill(mMinv,mY,mPt);
00221 mPositiveDenominatorMt->Fill(mMinv,mY,mMt-mM0);
00222 }
00223
00224 inline void MinvLikeSignCorrFctn_MinvYPt::AddLikeSignNegativePair(const StHbtPair* pair){
00225 mMinv = pair->mInv(); mY = pair->fourMomentumSum().rapidity();
00226 mPt = pair->fourMomentumSum().vect().perp(); mMt = ::sqrt(::pow(mMinv,2.)+::pow(mPt,2.));
00227 mNegativeDenominatorPt->Fill(mMinv,mY,mPt);
00228 mNegativeDenominatorMt->Fill(mMinv,mY,mMt-mM0);
00229 }
00230
00231