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):
32 //fphiL = (-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
33 //fphiT = 2*TMath::Pi()+(-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
35 TString hname = "hPairFraction"; hname+= title;
36 TString htitle = "Pair Fraction "; htitle+= title;
37 fPairFractions = new TH1F(hname.Data(),htitle.Data(), 7, 0, 7);
38 fPairFractions->GetXaxis()->SetBinLabel(1,"#pi#pi, MC");
39 fPairFractions->GetXaxis()->SetBinLabel(2,"KK, MC");
40 fPairFractions->GetXaxis()->SetBinLabel(3,"pp, MC");
41 fPairFractions->GetXaxis()->SetBinLabel(4,"#pi K, MC");
42 fPairFractions->GetXaxis()->SetBinLabel(5,"#pi p, MC");
43 fPairFractions->GetXaxis()->SetBinLabel(6,"Kp, MC");
44 fPairFractions->GetXaxis()->SetBinLabel(7,"Other, MC");
47 // to enable error bar calculation...
49 fPairFractions->Sumw2();
50 fPairFractions->Sumw2();
53 //____________________________
54 AliFemtoCorrFctnPairFractions::AliFemtoCorrFctnPairFractions(const AliFemtoCorrFctnPairFractions& aCorrFctn) :
61 if (aCorrFctn.fPairFractions)
62 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
66 if (aCorrFctn.fPairFractions)
67 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
71 fphiL = aCorrFctn.fphiL;
72 fphiT = aCorrFctn.fphiT;
76 //____________________________
77 AliFemtoCorrFctnPairFractions::~AliFemtoCorrFctnPairFractions(){
79 delete fPairFractions;
80 delete fPairFractions;
82 //_________________________
83 AliFemtoCorrFctnPairFractions& AliFemtoCorrFctnPairFractions::operator=(const AliFemtoCorrFctnPairFractions& aCorrFctn)
85 // assignment operator
86 if (this == &aCorrFctn)
89 if (aCorrFctn.fPairFractions)
90 fPairFractions = new TH1F(*aCorrFctn.fPairFractions);
95 fphiL = aCorrFctn.fphiL;
96 fphiT = aCorrFctn.fphiT;
100 //_________________________
101 void AliFemtoCorrFctnPairFractions::Finish(){
102 // here is where we should normalize, fit, etc...
103 // we should NOT Draw() the histos (as I had done it below),
104 // since we want to insulate ourselves from root at this level
105 // of the code. Do it instead at root command line with browser.
106 // mShareNumerator->Draw();
107 // mShareDenominator->Draw();
112 //____________________________
113 AliFemtoString AliFemtoCorrFctnPairFractions::Report(){
115 string stemp = "Pair Fractions Correlation Function Report:\n";
117 snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fPairFractions->GetEntries());
119 snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fPairFractions->GetEntries());
121 // stemp += mCoulombWeight->Report();
122 AliFemtoString returnThis = stemp;
125 //____________________________
126 void AliFemtoCorrFctnPairFractions::AddRealPair( AliFemtoPair* pair){
127 // add real (effect) pair
131 if (!fPairCut->Pass(pair)) return;
136 AliFemtoModelHiddenInfo *info1 = ( AliFemtoModelHiddenInfo *) pair->Track1()->GetHiddenInfo();
137 if(info1)pdg1 = info1->GetPDGPid();
140 AliFemtoModelHiddenInfo *info2 = ( AliFemtoModelHiddenInfo *) pair->Track2()->GetHiddenInfo();
141 if(info2)pdg2 = info2->GetPDGPid();
143 if(abs(pdg1)==211 && abs(pdg2)==211) //pi pi
144 fPairFractions->Fill(0.5);
145 else if(abs(pdg1)==321 && abs(pdg2)==321)// K K
146 fPairFractions->Fill(1.5);
147 else if(abs(pdg1)==2212 && abs(pdg2)==2212)// p p
148 fPairFractions->Fill(2.5);
149 else if(abs(pdg1)==211 && abs(pdg2)==321)// pi K
150 fPairFractions->Fill(3.5);
151 else if(abs(pdg1)==211 && abs(pdg2)==2212)// pi p
152 fPairFractions->Fill(4.5);
153 else if(abs(pdg1)==321 && abs(pdg2)==2212)//K p
154 fPairFractions->Fill(5.5);
156 fPairFractions->Fill(6.5);
158 /*double phi1 = pair->Track1()->Track()->P().Phi();
159 double phi2 = pair->Track2()->Track()->P().Phi();
160 double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
161 double eta2 = pair->Track2()->Track()->P().PseudoRapidity();
163 double phi1 = pair->Track1()->FourMomentum().Phi();
164 double phi2 = pair->Track2()->FourMomentum().Phi();
165 double eta1 = pair->Track1()->FourMomentum().PseudoRapidity();
166 double eta2 = pair->Track2()->FourMomentum().PseudoRapidity();
168 double dphi = phi1 - phi2;
169 while (dphi<fphiL) dphi+=PIT;
170 while (dphi>fphiT) dphi-=PIT;
172 double deta = eta1 - eta2;
174 double px1 = pair->Track1()->Track()->P().x();
175 double py1 = pair->Track1()->Track()->P().y();
176 double px2 = pair->Track2()->Track()->P().x();
177 double py2 = pair->Track2()->Track()->P().y();
178 double pt1 = TMath::Hypot(px1, py1);
179 double pt2 = TMath::Hypot(px2, py2);
182 double PionMass = 0.13956995;*/
185 //____________________________
186 void AliFemtoCorrFctnPairFractions::AddMixedPair( AliFemtoPair* pair){
187 // add mixed (background) pair
189 if (!fPairCut->Pass(pair)) return;
194 void AliFemtoCorrFctnPairFractions::WriteHistos()
196 // Write out result histograms
197 fPairFractions->Write();
200 TList* AliFemtoCorrFctnPairFractions::GetOutputList()
202 // Prepare the list of objects to be written to the output
203 TList *tOutputList = new TList();
205 tOutputList->Add(fPairFractions);