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 #include "StHbtMaker/CorrFctn/MinvCorrFctnY_vs_Pt.h"
00031
00032 #include <cstdio>
00033
00034 #ifdef __ROOT__
00035 ClassImp(MinvCorrFctnY_vs_Pt)
00036 #endif
00037
00038 MinvCorrFctnY_vs_Pt::MinvCorrFctnY_vs_Pt(char* title,
00039 const int& nbins1, const float& MinvLo1, const float& MinvHi1,
00040 const int& nbins2, const float& MinvLo2, const float& MinvHi2){
00041 char theTitle[100];
00042
00043 char* TitNum = "MinvCorrFctnY_vs_Pt_Num";
00044 sprintf(theTitle,"Num %s",title);
00045 mNumerator = new StHbt2DHisto(TitNum,theTitle,nbins1,MinvLo1,MinvHi1,nbins2,MinvLo2,MinvHi2);
00046
00047 char* TitDen = "MinvCorrFctnY_vs_Pt_Den";
00048 sprintf(theTitle,"Den %s",title);
00049 mDenominator = new StHbt2DHisto(TitDen,theTitle,nbins1,MinvLo1,MinvHi1,nbins2,MinvLo2,MinvHi2);
00050
00051 char* TitDif = "MinvCorrFctnY_vs_Pt_Dif";
00052 sprintf(theTitle,"Dif %s",title);
00053 mDifference = new StHbt2DHisto(TitDif,theTitle,nbins1,MinvLo1,MinvHi1,nbins2,MinvLo2,MinvHi2);
00054
00055
00056 mNumerator->SetDirectory(0);
00057 mDenominator->SetDirectory(0);
00058 mDifference->SetDirectory(0);
00059 mNumerator->Sumw2();
00060 mDenominator->Sumw2();
00061 mDifference->Sumw2();
00062 }
00063
00064
00065 MinvCorrFctnY_vs_Pt::~MinvCorrFctnY_vs_Pt(){
00066 delete mNumerator;
00067 delete mDenominator;
00068 delete mDifference;
00069 }
00070
00071 void MinvCorrFctnY_vs_Pt::Finish(){
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 int NEvents = 1;
00082 if ( dynamic_cast<StHbtAnalysis*>( HbtAnalysis() ) ) {
00083 if ( dynamic_cast<mikesEventCut*>( ((StHbtAnalysis*)HbtAnalysis())->EventCut() ) )
00084 NEvents = ((mikesEventCut*)((StHbtAnalysis*)HbtAnalysis())->EventCut())->NEventsPassed();
00085 }
00086
00087 mNumerator->Scale(1./NEvents);
00088 mDenominator->Scale(1./NEvents);
00089 mDifference->Scale(1./NEvents);
00090
00091
00092
00093
00094 double NumeratorInt = mRealPairs;
00095 double DenominatorInt = mMixedPairs;
00096 mDifference->Add(mNumerator,mDenominator,1.0,-1*NumeratorInt/DenominatorInt);
00097
00098 }
00099
00100
00101 StHbtString MinvCorrFctnY_vs_Pt::Report(){
00102 string stemp = "Minv Correlation Function Report:\n";
00103 char ctemp[100];
00104 sprintf(ctemp,"Number of entries in numerator:\t%E\n",mNumerator->GetEntries());
00105 stemp += ctemp;
00106 sprintf(ctemp,"Number of entries in denominator:\t%E\n",mDenominator->GetEntries());
00107 stemp += ctemp;
00108 sprintf(ctemp,"Number of entries in difference:\t%E\n",mDifference->GetEntries());
00109 stemp += ctemp;
00110 StHbtString returnThis = stemp;
00111 return returnThis;
00112 }
00113
00114 void MinvCorrFctnY_vs_Pt::AddRealPair(const StHbtPair* pair){
00115 if ( fabs( pair->mInv()-1.02 ) < .01 )
00116 mNumerator->Fill( pair->fourMomentumSum().rapidity(), pair->fourMomentumSum().perp(), 1.);
00117 else
00118 mRealPairs++;
00119 }
00120
00121 void MinvCorrFctnY_vs_Pt::AddMixedPair(const StHbtPair* pair){
00122 if ( fabs( pair->mInv()-1.02 ) < .01 )
00123 mDenominator->Fill( pair->fourMomentumSum().rapidity(), pair->fourMomentumSum().perp(), 1.);
00124 else
00125 mMixedPairs++;
00126 }
00127
00128