1 ///////////////////////////////////////////////////////////////////////////
3 // AliFemtoQinvCorrFctn: //
4 // a simple Q-invariant correlation function //
6 ///////////////////////////////////////////////////////////////////////////
8 #include "AliFemtoQinvCorrFctn.h"
9 //#include "AliFemtoHisto.h"
13 ClassImp(AliFemtoQinvCorrFctn)
16 //____________________________
17 AliFemtoQinvCorrFctn::AliFemtoQinvCorrFctn(char* title, const int& nbins, const float& QinvLo, const float& QinvHi):
24 // title = "Num Qinv (MeV/c)";
25 char tTitNum[100] = "Num";
26 strcat(tTitNum,title);
27 fNumerator = new TH1D(tTitNum,title,nbins,QinvLo,QinvHi);
29 //title = "Den Qinv (MeV/c)";
30 char tTitDen[100] = "Den";
31 strcat(tTitDen,title);
32 fDenominator = new TH1D(tTitDen,title,nbins,QinvLo,QinvHi);
34 //title = "Ratio Qinv (MeV/c)";
35 char tTitRat[100] = "Rat";
36 strcat(tTitRat,title);
37 fRatio = new TH1D(tTitRat,title,nbins,QinvLo,QinvHi);
38 char tTitkT[100] = "kTDep";
40 fkTMonitor = new TH1D(tTitkT,title,200,0.0,2.0);
41 // this next bit is unfortunately needed so that we can have many histos of same "title"
42 // it is neccessary if we typedef TH1D to TH1d (which we do)
43 //fNumerator->SetDirectory(0);
44 //fDenominator->SetDirectory(0);
45 //fRatio->SetDirectory(0);
47 // to enable error bar calculation...
49 fDenominator->Sumw2();
54 //____________________________
55 AliFemtoQinvCorrFctn::AliFemtoQinvCorrFctn(const AliFemtoQinvCorrFctn& aCorrFctn) :
63 fNumerator = new TH1D(*aCorrFctn.fNumerator);
64 fDenominator = new TH1D(*aCorrFctn.fDenominator);
65 fRatio = new TH1D(*aCorrFctn.fRatio);
66 fkTMonitor = new TH1D(*aCorrFctn.fkTMonitor);
68 //____________________________
69 AliFemtoQinvCorrFctn::~AliFemtoQinvCorrFctn(){
76 //_________________________
77 AliFemtoQinvCorrFctn& AliFemtoQinvCorrFctn::operator=(const AliFemtoQinvCorrFctn& aCorrFctn)
79 // assignment operator
80 if (this == &aCorrFctn)
83 if (fNumerator) delete fNumerator;
84 fNumerator = new TH1D(*aCorrFctn.fNumerator);
85 if (fDenominator) delete fDenominator;
86 fDenominator = new TH1D(*aCorrFctn.fDenominator);
87 if (fRatio) delete fRatio;
88 fRatio = new TH1D(*aCorrFctn.fRatio);
89 if (fkTMonitor) delete fkTMonitor;
90 fkTMonitor = new TH1D(*aCorrFctn.fkTMonitor);
95 //_________________________
96 void AliFemtoQinvCorrFctn::Finish(){
97 // here is where we should normalize, fit, etc...
98 // we should NOT Draw() the histos (as I had done it below),
99 // since we want to insulate ourselves from root at this level
100 // of the code. Do it instead at root command line with browser.
101 // fNumerator->Draw();
102 //fDenominator->Draw();
104 fRatio->Divide(fNumerator,fDenominator,1.0,1.0);
108 //____________________________
109 AliFemtoString AliFemtoQinvCorrFctn::Report(){
111 string stemp = "Qinv Correlation Function Report:\n";
113 sprintf(ctemp,"Number of entries in numerator:\t%E\n",fNumerator->GetEntries());
115 sprintf(ctemp,"Number of entries in denominator:\t%E\n",fDenominator->GetEntries());
117 sprintf(ctemp,"Number of entries in ratio:\t%E\n",fRatio->GetEntries());
119 // stemp += mCoulombWeight->Report();
120 AliFemtoString returnThis = stemp;
123 //____________________________
124 void AliFemtoQinvCorrFctn::AddRealPair(AliFemtoPair* pair){
127 if (!fPairCut->Pass(pair)) return;
129 double tQinv = fabs(pair->QInv()); // note - qInv() will be negative for identical pairs...
130 fNumerator->Fill(tQinv);
131 fkTMonitor->Fill(pair->KT());
132 // cout << "AliFemtoQinvCorrFctn::AddRealPair : " << pair->qInv() << " " << tQinv <<
133 //" " << pair->track1().FourMomentum() << " " << pair->track2().FourMomentum() << endl;
135 //____________________________
136 void AliFemtoQinvCorrFctn::AddMixedPair(AliFemtoPair* pair){
137 // add mixed (background) pair
139 if (!fPairCut->Pass(pair)) return;
142 double tQinv = fabs(pair->QInv()); // note - qInv() will be negative for identical pairs...
143 fDenominator->Fill(tQinv,weight);
145 //____________________________
146 void AliFemtoQinvCorrFctn::Write(){
147 // Write out neccessary objects
149 fDenominator->Write();
152 //______________________________
153 TList* AliFemtoQinvCorrFctn::GetOutputList()
155 // Prepare the list of objects to be written to the output
156 TList *tOutputList = new TList();
158 tOutputList->Add(fNumerator);
159 tOutputList->Add(fDenominator);
160 tOutputList->Add(fkTMonitor);