1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoCorrFctnPairFractions - A correlation function that analyzes //
4 // two particle correlations with respect to the azimuthal angle (phi) //
5 // and pseudorapidity (eta) difference //
7 // Authors: Malgorzata Janik, majanik@cern.ch //
9 ////////////////////////////////////////////////////////////////////////////////
11 #include "AliFemtoCorrFctnPairFractions.h"
12 #include "AliFemtoModelHiddenInfo.h"
13 //#include "AliFemtoHisto.hh"
18 ClassImp(AliFemtoCorrFctnPairFractions)
21 #define PIH 1.57079632679489656
22 #define PIT 6.28318530717958623
24 //____________________________
25 AliFemtoCorrFctnPairFractions::AliFemtoCorrFctnPairFractions(char* title):
33 //fphiL = (-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
34 //fphiT = 2*TMath::Pi()+(-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
36 TString hname = "hPairFraction"; hname+= title;
37 TString htitle = "Pair Fraction "; htitle+= title;
38 fPairFractions = new TH1F(hname.Data(),htitle.Data(), 9, 0, 9);
39 fPairFractions->GetXaxis()->SetBinLabel(1,"#pi#pi, MC");
40 fPairFractions->GetXaxis()->SetBinLabel(2,"KK, MC");
41 fPairFractions->GetXaxis()->SetBinLabel(3,"pp, MC");
42 fPairFractions->GetXaxis()->SetBinLabel(4,"#pi K, MC");
43 fPairFractions->GetXaxis()->SetBinLabel(5,"#pi p, MC");
44 fPairFractions->GetXaxis()->SetBinLabel(6,"Kp, MC");
45 fPairFractions->GetXaxis()->SetBinLabel(7,"e+, MC");
46 fPairFractions->GetXaxis()->SetBinLabel(8,"#mu+, MC");
47 fPairFractions->GetXaxis()->SetBinLabel(9,"Other, MC");
49 hname = "hPairFractionDen"; hname+= title;
50 htitle = "Pair Fraction in Mixing "; htitle+= title;
51 fPairFractionsDen = new TH1F(hname.Data(),htitle.Data(), 9, 0, 9);
52 fPairFractionsDen->GetXaxis()->SetBinLabel(1,"#pi#pi, MC");
53 fPairFractionsDen->GetXaxis()->SetBinLabel(2,"KK, MC");
54 fPairFractionsDen->GetXaxis()->SetBinLabel(3,"pp, MC");
55 fPairFractionsDen->GetXaxis()->SetBinLabel(4,"#pi K, MC");
56 fPairFractionsDen->GetXaxis()->SetBinLabel(5,"#pi p, MC");
57 fPairFractionsDen->GetXaxis()->SetBinLabel(6,"Kp, MC");
58 fPairFractionsDen->GetXaxis()->SetBinLabel(7,"e+, MC");
59 fPairFractionsDen->GetXaxis()->SetBinLabel(8,"#mu+, MC");
60 fPairFractionsDen->GetXaxis()->SetBinLabel(9,"Other, MC");
62 // to enable error bar calculation...
63 fPairFractions->Sumw2();
64 fPairFractionsDen->Sumw2();
67 //____________________________
68 AliFemtoCorrFctnPairFractions::AliFemtoCorrFctnPairFractions(const AliFemtoCorrFctnPairFractions& aCorrFctn) :
76 if (aCorrFctn.fPairFractions)
77 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
81 if (aCorrFctn.fPairFractions)
82 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
86 fphiL = aCorrFctn.fphiL;
87 fphiT = aCorrFctn.fphiT;
91 //____________________________
92 AliFemtoCorrFctnPairFractions::~AliFemtoCorrFctnPairFractions(){
95 delete fPairFractions;
97 delete fPairFractionsDen;
99 //_________________________
100 AliFemtoCorrFctnPairFractions& AliFemtoCorrFctnPairFractions::operator=(const AliFemtoCorrFctnPairFractions& aCorrFctn)
102 // assignment operator
103 if (this == &aCorrFctn)
106 if (aCorrFctn.fPairFractions)
107 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
111 if (aCorrFctn.fPairFractionsDen)
112 fPairFractionsDen = new TH1F(*aCorrFctn.fPairFractionsDen);
114 fPairFractionsDen = 0;
116 fphiL = aCorrFctn.fphiL;
117 fphiT = aCorrFctn.fphiT;
121 //_________________________
122 void AliFemtoCorrFctnPairFractions::Finish(){
123 // here is where we should normalize, fit, etc...
124 // we should NOT Draw() the histos (as I had done it below),
125 // since we want to insulate ourselves from root at this level
126 // of the code. Do it instead at root command line with browser.
127 // mShareNumerator->Draw();
128 // mShareDenominator->Draw();
133 //____________________________
134 AliFemtoString AliFemtoCorrFctnPairFractions::Report(){
136 string stemp = "Pair Fractions Correlation Function Report:\n";
138 snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fPairFractions->GetEntries());
140 snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fPairFractions->GetEntries());
142 // stemp += mCoulombWeight->Report();
143 AliFemtoString returnThis = stemp;
146 //____________________________
147 void AliFemtoCorrFctnPairFractions::AddRealPair( AliFemtoPair* pair){
148 // add real (effect) pair
152 if (!fPairCut->Pass(pair)) return;
157 AliFemtoModelHiddenInfo *info1 = ( AliFemtoModelHiddenInfo *) pair->Track1()->GetHiddenInfo();
158 if(info1)pdg1 = info1->GetPDGPid();
160 AliFemtoModelHiddenInfo *info2 = ( AliFemtoModelHiddenInfo *) pair->Track2()->GetHiddenInfo();
161 if(info2)pdg2 = info2->GetPDGPid();
163 if(abs(pdg1)==211 && abs(pdg2)==211) //pi pi
164 fPairFractions->Fill(0.5);
165 else if(abs(pdg1)==321 && abs(pdg2)==321)// K K
166 fPairFractions->Fill(1.5);
167 else if(abs(pdg1)==2212 && abs(pdg2)==2212)// p p
168 fPairFractions->Fill(2.5);
169 else if((abs(pdg1)==211 && abs(pdg2)==321)||(abs(pdg1)==321 && abs(pdg2)==211))// pi K
170 fPairFractions->Fill(3.5);
171 else if((abs(pdg1)==211 && abs(pdg2)==2212)||(abs(pdg1)==2212 && abs(pdg2)==211))// pi p
172 fPairFractions->Fill(4.5);
173 else if((abs(pdg1)==321 && abs(pdg2)==2212)||(abs(pdg1)==2212 && abs(pdg2)==321))//K p
174 fPairFractions->Fill(5.5);
175 else if(abs(pdg1)==13 || abs(pdg2)==13)//one particle from the pair is electron
176 fPairFractions->Fill(6.5);
177 else if(abs(pdg1)==11 || abs(pdg2)==11)//one particle from the pair is muon
178 fPairFractions->Fill(7.5);
181 fPairFractions->Fill(8.5);
183 /*double phi1 = pair->Track1()->Track()->P().Phi();
184 double phi2 = pair->Track2()->Track()->P().Phi();
185 double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
186 double eta2 = pair->Track2()->Track()->P().PseudoRapidity();
188 double phi1 = pair->Track1()->FourMomentum().Phi();
189 double phi2 = pair->Track2()->FourMomentum().Phi();
190 double eta1 = pair->Track1()->FourMomentum().PseudoRapidity();
191 double eta2 = pair->Track2()->FourMomentum().PseudoRapidity();
193 double dphi = phi1 - phi2;
194 while (dphi<fphiL) dphi+=PIT;
195 while (dphi>fphiT) dphi-=PIT;
197 double deta = eta1 - eta2;
199 double px1 = pair->Track1()->Track()->P().x();
200 double py1 = pair->Track1()->Track()->P().y();
201 double px2 = pair->Track2()->Track()->P().x();
202 double py2 = pair->Track2()->Track()->P().y();
203 double pt1 = TMath::Hypot(px1, py1);
204 double pt2 = TMath::Hypot(px2, py2);
207 double PionMass = 0.13956995;*/
210 //____________________________
211 void AliFemtoCorrFctnPairFractions::AddMixedPair( AliFemtoPair* pair){
212 // add mixed (background) pair
214 if (!fPairCut->Pass(pair)) return;
219 AliFemtoModelHiddenInfo *info1 = ( AliFemtoModelHiddenInfo *) pair->Track1()->GetHiddenInfo();
220 if(info1)pdg1 = info1->GetPDGPid();
222 AliFemtoModelHiddenInfo *info2 = ( AliFemtoModelHiddenInfo *) pair->Track2()->GetHiddenInfo();
223 if(info2)pdg2 = info2->GetPDGPid();
225 if(abs(pdg1)==211 && abs(pdg2)==211) //pi pi
226 fPairFractionsDen->Fill(0.5);
227 else if(abs(pdg1)==321 && abs(pdg2)==321)// K K
228 fPairFractionsDen->Fill(1.5);
229 else if(abs(pdg1)==2212 && abs(pdg2)==2212)// p p
230 fPairFractionsDen->Fill(2.5);
231 else if((abs(pdg1)==211 && abs(pdg2)==321)||(abs(pdg1)==321 && abs(pdg2)==211))// pi K
232 fPairFractionsDen->Fill(3.5);
233 else if((abs(pdg1)==211 && abs(pdg2)==2212)||(abs(pdg1)==2212 && abs(pdg2)==211))// pi p
234 fPairFractionsDen->Fill(4.5);
235 else if((abs(pdg1)==321 && abs(pdg2)==2212)||(abs(pdg1)==2212 && abs(pdg2)==321))//K p
236 fPairFractionsDen->Fill(5.5);
237 else if(abs(pdg1)==13 || abs(pdg2)==13)//one particle from the pair is electron
238 fPairFractionsDen->Fill(6.5);
239 else if(abs(pdg1)==11 || abs(pdg2)==11)//one particle from the pair is muon
240 fPairFractionsDen->Fill(7.5);
243 fPairFractionsDen->Fill(8.5);
249 void AliFemtoCorrFctnPairFractions::WriteHistos()
251 // Write out result histograms
252 fPairFractions->Write();
253 fPairFractionsDen->Write();
256 TList* AliFemtoCorrFctnPairFractions::GetOutputList()
258 // Prepare the list of objects to be written to the output
259 TList *tOutputList = new TList();
261 tOutputList->Add(fPairFractions);
262 tOutputList->Add(fPairFractionsDen);