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
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #include "StHbtMaker/CorrFctn/MinvCorrFctn.h"
00062
00063 #include "StHbtMaker/Infrastructure/StHbtAnalysis.h"
00064 #include "StHbtMaker/Cut/mikesEventCut.h"
00065
00066 #include <cstdio>
00067
00068 #ifdef __ROOT__
00069 ClassImp(MinvCorrFctn)
00070 #endif
00071
00072
00073 MinvCorrFctn::MinvCorrFctn(char* title, const int& nbins, const float& MinvLo, const float& MinvHi){
00074
00075
00076 char theTitle[100];
00077
00078 const char *TitNum = "MinvCorrFctn_Num";
00079 sprintf(theTitle,"Num %s\n",title);
00080 mNumerator = new StHbt1DHisto(TitNum,theTitle,nbins,MinvLo,MinvHi);
00081
00082 const char *TitDen= "MinvCorrFctn_Den";
00083 sprintf(theTitle,"Den %s\n",title);
00084 mDenominator = new StHbt1DHisto(TitDen,theTitle,nbins,MinvLo,MinvHi);
00085
00086 const char *TitDif = "MinvCorrFctn_Dif";
00087 sprintf(theTitle,"Dif %s\n",title);
00088 mDifference = new StHbt1DHisto(TitDif,theTitle,nbins,MinvLo,MinvHi);
00089
00090
00091 mNumerator->SetDirectory(0);
00092 mDenominator->SetDirectory(0);
00093 mDifference->SetDirectory(0);
00094
00095 mNumerator->Sumw2();
00096 mDenominator->Sumw2();
00097 mDifference->Sumw2();
00098
00099
00100
00101
00102 }
00103
00104
00105 MinvCorrFctn::~MinvCorrFctn(){
00106 delete mNumerator;
00107 delete mDenominator;
00108 delete mDifference;
00109 }
00110
00111 void MinvCorrFctn::Finish(){
00112 long NEvents = 1;
00113 if ( dynamic_cast<StHbtAnalysis*>( HbtAnalysis() ) ) {
00114 if ( dynamic_cast<mikesEventCut*>( ((StHbtAnalysis*)HbtAnalysis())->EventCut() ) )
00115 NEvents = ((mikesEventCut*)((StHbtAnalysis*)HbtAnalysis())->EventCut())->NEventsPassed();
00116 }
00117
00118 mNumerator->Scale(1./NEvents);
00119 mDenominator->Scale(1./NEvents);
00120 mDifference->Scale(1./NEvents);
00121
00122 double NumeratorInt = mNumerator->Integral();
00123 double DenominatorInt = mDenominator->Integral();
00124 mDifference->Add(mNumerator,mDenominator,1.0,-1*NumeratorInt/DenominatorInt);
00125
00126 }
00127
00128 StHbtString MinvCorrFctn::Report(){
00129 string stemp = "Minv Correlation Function Report:\n";
00130 char ctemp[100];
00131 sprintf(ctemp,"Number of entries in numerator:\t%E\n",mNumerator->GetEntries());
00132 stemp += ctemp;
00133 sprintf(ctemp,"Number of entries in denominator:\t%E\n",mDenominator->GetEntries());
00134 stemp += ctemp;
00135 sprintf(ctemp,"Number of entries in difference:\t%E\n",mDifference->GetEntries());
00136 stemp += ctemp;
00137 StHbtString returnThis = stemp;
00138 return returnThis;
00139 }
00140
00141 inline void MinvCorrFctn::AddRealPair(const StHbtPair* pair){
00142 mNumerator->Fill(pair->mInv());
00143
00144 }
00145
00146 inline void MinvCorrFctn::AddMixedPair(const StHbtPair* pair){
00147 mDenominator->Fill(pair->mInv());
00148 }
00149
00150