00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "StHbtMaker/CorrFctn/OpeningAngleCorrFctn.h"
00014 #include <cstdio>
00015
00016 #ifdef __ROOT__
00017 ClassImp(OpeningAngleCorrFctn)
00018 #endif
00019
00020 OpeningAngleCorrFctn:: OpeningAngleCorrFctn(char* title, const int& nbinsQ, const float& QLo, const float& QHi,
00021 const int& nbinsAng, const float& AngLo, const float& AngHi){
00022
00023 char Tit[100];
00024 sprintf(Tit,"2D Num");
00025 strcat(Tit,title);
00026 mNumerator2D = new StHbt2DHisto(Tit,title,nbinsQ,QLo,QHi,nbinsAng,AngLo,AngHi);
00027
00028
00029 sprintf(Tit,"2D Den");
00030 strcat(Tit,title);
00031 mDenominator2D = new StHbt2DHisto(Tit,title,nbinsQ,QLo,QHi,nbinsAng,AngLo,AngHi);
00032
00033
00034 sprintf(Tit,"2D Rat");
00035 strcat(Tit,title);
00036 mRatio2D = new StHbt2DHisto(Tit,title,nbinsQ,QLo,QHi,nbinsAng,AngLo,AngHi);
00037
00038
00039 mNumerator2D->Sumw2();
00040 mDenominator2D->Sumw2();
00041 mRatio2D->Sumw2();
00042
00043 }
00044
00045
00046 OpeningAngleCorrFctn::~OpeningAngleCorrFctn(){
00047 delete mNumerator2D;
00048 delete mDenominator2D;
00049 delete mRatio2D;
00050 }
00051
00052 void OpeningAngleCorrFctn::Finish(){
00053
00054
00055
00056
00057 mRatio2D->Divide(mNumerator2D,mDenominator2D,1.0,1.0);
00058 }
00059
00060
00061 StHbtString OpeningAngleCorrFctn::Report(){
00062 string stemp = "Opening Angle Correlation Function Report:\n";
00063 char ctemp[100];
00064 sprintf(ctemp,"Number of entries in numerator:\t%E\n",
00065 mNumerator2D->GetEntries());
00066 stemp += ctemp;
00067 sprintf(ctemp,"Number of entries in denominator:\t%E\n",
00068 mDenominator2D->GetEntries());
00069 stemp += ctemp;
00070 StHbtString returnThis = stemp;
00071 return returnThis;
00072 }
00073
00074 void OpeningAngleCorrFctn::AddRealPair(const StHbtPair* pair){
00075 StHbtThreeVector p1 = pair->track1()->FourMomentum().vect();
00076 StHbtThreeVector p2 = pair->track2()->FourMomentum().vect();
00077
00078
00079
00080
00081
00082
00083
00084
00085 double dAngInv = 57.296*acos((p1.dot(p2))/(p1.mag()*p2.mag()));
00086
00087 double Qinv = fabs(pair->qInv());
00088
00089 mNumerator2D->Fill(Qinv,dAngInv,1.0);
00090 }
00091
00092 void OpeningAngleCorrFctn::AddMixedPair(const StHbtPair* pair){
00093 StHbtThreeVector p1 = pair->track1()->FourMomentum().vect();
00094 StHbtThreeVector p2 = pair->track2()->FourMomentum().vect();
00095
00096
00097
00098
00099
00100
00101
00102
00103 double dAngInv = 57.296*acos((p1.dot(p2))/(p1.mag()*p2.mag()));
00104 double Qinv = fabs(pair->qInv());
00105
00106 mDenominator2D->Fill(Qinv,dAngInv,1.0);
00107 }
00108
00109
00110