00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "StHbtMaker/CorrFctn/MinvLikeSignCorrFctn.h"
00021 #include <cstdio>
00022
00023 #ifdef __ROOT__
00024 ClassImp(MinvLikeSignCorrFctn)
00025 #endif
00026
00027
00028 MinvLikeSignCorrFctn::MinvLikeSignCorrFctn(char* title1, char* title2,
00029 const int& nbins, const float& MinvLo, const float& MinvHi){
00030 #ifdef __ROOT__
00031 mTagWriter = StHbtTagWriter::Instance();
00032 #endif
00033
00034 char theTitle1[100];
00035 char theTitle2[100];
00036 sprintf(theTitle2,"%s",title2);
00037
00038 sprintf(theTitle1,"MinvLikeSignCorrFctnNum_%s",title1);
00039 mNumerator = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00040
00041 sprintf(theTitle1,"MinvLikeSignCorrFctnMixedEventDen_%s",title1);
00042 mMixedEventDenominator = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00043
00044 sprintf(theTitle1,"MinvLikeSignCorrFctnPositiveDen_%s",title1);
00045 mPositiveDenominator = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00046
00047 sprintf(theTitle1,"MinvLikeSignCorrFctnNegativeDen_%s",title1);
00048 mNegativeDenominator = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00049
00050 sprintf(theTitle1,"MinvLikeSignCorrFctnMixedEventDif_%s",title1);
00051 mMixedEventDifference = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00052
00053 sprintf(theTitle1,"MinvLikeSignCorrFctnLikeSignDif_%s",title1);
00054 mLikeSignDifference = new StHbt1DHisto(theTitle1,theTitle2,nbins,MinvLo,MinvHi);
00055
00056
00057 mNumerator->SetDirectory(0);
00058 mMixedEventDenominator->SetDirectory(0);
00059 mPositiveDenominator->SetDirectory(0);
00060 mNegativeDenominator->SetDirectory(0);
00061 mMixedEventDifference->SetDirectory(0);
00062 mLikeSignDifference->SetDirectory(0);
00063
00064 mNumerator->Sumw2();
00065 mMixedEventDenominator->Sumw2();
00066 mPositiveDenominator->Sumw2();
00067 mNegativeDenominator->Sumw2();
00068 mMixedEventDifference->Sumw2();
00069 mLikeSignDifference->Sumw2();
00070
00071
00072
00073
00074 }
00075
00076
00077 MinvLikeSignCorrFctn::~MinvLikeSignCorrFctn(){
00078 delete mNumerator;
00079 delete mMixedEventDenominator;
00080 delete mPositiveDenominator;
00081 delete mNegativeDenominator;
00082 delete mMixedEventDifference;
00083 delete mLikeSignDifference;
00084 }
00085
00086 void MinvLikeSignCorrFctn::Finish(){
00087 int NEvents = 1;
00088 if ( dynamic_cast<StHbtAnalysis*>( HbtAnalysis() ) ) {
00089 if ( dynamic_cast<mikesEventCut*>( ((StHbtAnalysis*)HbtAnalysis())->EventCut() ) )
00090 NEvents = ((mikesEventCut*)((StHbtAnalysis*)HbtAnalysis())->EventCut())->NEventsPassed();
00091 }
00092
00093 mNumerator->Scale(1./NEvents);
00094 mMixedEventDenominator->Scale(1./NEvents);
00095 mPositiveDenominator->Scale(1./NEvents);
00096 mNegativeDenominator->Scale(1./NEvents);
00097 mMixedEventDifference->Scale(1./NEvents);
00098 mLikeSignDifference->Scale(1./NEvents);
00099
00100 double NumeratorInt = mNumerator->Integral();
00101 double MixedEventDenominatorInt = mMixedEventDenominator->Integral();
00102 mMixedEventDifference->Add(mNumerator,mMixedEventDenominator,1.0,-1*NumeratorInt/MixedEventDenominatorInt);
00103 mLikeSignDifference->Add(mNumerator,mPositiveDenominator,1.,-1.);
00104 mLikeSignDifference->Add(mLikeSignDifference,mNegativeDenominator,1.,-1.);
00105
00106 }
00107
00108 StHbtString MinvLikeSignCorrFctn::Report(){
00109 string stemp = "Minv 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 mixed event denominator:\t%E\n",mMixedEventDenominator->GetEntries());
00114 stemp += ctemp;
00115 sprintf(ctemp,"Number of entries in like sign positive denominator:\t%E\n",mPositiveDenominator->GetEntries());
00116 stemp += ctemp;
00117 sprintf(ctemp,"Number of entries in like sign negative denominator:\t%E\n",mNegativeDenominator->GetEntries());
00118 stemp += ctemp;
00119 sprintf(ctemp,"Number of entries in mixed event difference:\t%E\n",mMixedEventDifference->GetEntries());
00120 stemp += ctemp;
00121 sprintf(ctemp,"Number of entries in like sign difference:\t%E\n",mLikeSignDifference->GetEntries());
00122 stemp += ctemp;
00123 StHbtString returnThis = stemp;
00124 return returnThis;
00125 }
00126
00127 inline void MinvLikeSignCorrFctn::AddRealPair(const StHbtPair* pair){
00128 mNumerator->Fill(pair->mInv());
00129 }
00130
00131 inline void MinvLikeSignCorrFctn::AddMixedPair(const StHbtPair* pair){
00132 mMixedEventDenominator->Fill(pair->mInv());
00133 }
00134
00135 inline void MinvLikeSignCorrFctn::AddLikeSignPositivePair(const StHbtPair* pair){
00136 mPositiveDenominator->Fill(pair->mInv());
00137 }
00138
00139 inline void MinvLikeSignCorrFctn::AddLikeSignNegativePair(const StHbtPair* pair){
00140 mNegativeDenominator->Fill(pair->mInv());
00141 }
00142
00143