1 ///////////////////////////////////////////////////////////////////////////
3 // AliFemtoCorrFctn3DLCMSSym: a class to calculate 3D correlation //
4 // for pairs of identical particles. //
5 // In analysis the function should be first created in a macro, then //
6 // added to the analysis, and at the end of the macro the procedure to //
7 // write out histograms should be called. //
9 ///////////////////////////////////////////////////////////////////////////
11 #include "AliFemtoCorrFctn3DLCMSSym.h"
16 ClassImp(AliFemtoCorrFctn3DLCMSSym)
19 //____________________________
20 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(char* title, const int& nbins, const float& QHi)
32 char tTitNum[101] = "Num";
33 strncat(tTitNum,title, 100);
34 fNumerator = new TH3F(tTitNum,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
36 char tTitDen[101] = "Den";
37 strncat(tTitDen,title, 100);
38 fDenominator = new TH3F(tTitDen,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
39 //Weighted by qinv histos
41 char tTitNumW[101] = "NumWqinv";
42 strncat(tTitNumW,title, 100);
43 fNumeratorW = new TH3F(tTitNumW,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
45 char tTitDenW[101] = "DenWqinv";
46 strncat(tTitDenW,title, 100);
47 fDenominatorW = new TH3F(tTitDenW,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
49 // to enable error bar calculation...
51 fDenominator->Sumw2();
53 fDenominatorW->Sumw2();
56 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn) :
57 AliFemtoCorrFctn(aCorrFctn),
65 fNumerator = new TH3F(*aCorrFctn.fNumerator);
66 fDenominator = new TH3F(*aCorrFctn.fDenominator);
67 fNumeratorW = new TH3F(*aCorrFctn.fNumeratorW);
68 fDenominatorW = new TH3F(*aCorrFctn.fDenominatorW);
69 fUseLCMS = aCorrFctn.fUseLCMS;
71 //____________________________
72 AliFemtoCorrFctn3DLCMSSym::~AliFemtoCorrFctn3DLCMSSym(){
79 //_________________________
80 AliFemtoCorrFctn3DLCMSSym& AliFemtoCorrFctn3DLCMSSym::operator=(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn)
82 // assignment operator
83 if (this == &aCorrFctn)
86 if (fNumerator) delete fNumerator;
87 fNumerator = new TH3F(*aCorrFctn.fNumerator);
88 if (fDenominator) delete fDenominator;
89 fDenominator = new TH3F(*aCorrFctn.fDenominator);
90 if (fNumeratorW) delete fNumeratorW;
91 fNumeratorW = new TH3F(*aCorrFctn.fNumeratorW);
92 if (fDenominatorW) delete fDenominatorW;
93 fDenominatorW = new TH3F(*aCorrFctn.fDenominatorW);
94 fUseLCMS = aCorrFctn.fUseLCMS;
98 //_________________________
99 void AliFemtoCorrFctn3DLCMSSym::WriteOutHistos(){
100 // Write out all histograms to file
102 fDenominator->Write();
103 fNumeratorW->Write();
104 fDenominatorW->Write();
106 //______________________________
107 TList* AliFemtoCorrFctn3DLCMSSym::GetOutputList()
109 // Prepare the list of objects to be written to the output
110 TList *tOutputList = new TList();
112 tOutputList->Add(fNumerator);
113 tOutputList->Add(fDenominator);
114 tOutputList->Add(fNumeratorW);
115 tOutputList->Add(fDenominatorW);
120 //_________________________
121 void AliFemtoCorrFctn3DLCMSSym::Finish(){
122 // here is where we should normalize, fit, etc...
126 //____________________________
127 AliFemtoString AliFemtoCorrFctn3DLCMSSym::Report(){
128 // Construct the report
129 string stemp = "LCMS Frame Bertsch-Pratt 3D Correlation Function Report:\n";
131 snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNumerator->GetEntries());
133 snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDenominator->GetEntries());
137 snprintf(ctemp , 100, "Here is the PairCut specific to this CorrFctn\n");
139 stemp += fPairCut->Report();
142 snprintf(ctemp , 100, "No PairCut specific to this CorrFctn\n");
147 AliFemtoString returnThis = stemp;
150 //____________________________
151 void AliFemtoCorrFctn3DLCMSSym::AddRealPair( AliFemtoPair* pair){
152 // perform operations on real pairs
154 if (!(fPairCut->Pass(pair))) return;
158 fNumerator->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS());
159 fNumeratorW->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),pair->QInv());
162 fNumerator->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf());
163 fNumeratorW->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),pair->QInv());
166 //____________________________
167 void AliFemtoCorrFctn3DLCMSSym::AddMixedPair( AliFemtoPair* pair){
168 // perform operations on mixed pairs
170 if (!(fPairCut->Pass(pair))) return;
174 fDenominator->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),1.0);
175 fDenominatorW->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),pair->QInv());
178 fDenominator->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),1.0);
179 fDenominatorW->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),pair->QInv());
186 void AliFemtoCorrFctn3DLCMSSym::SetUseLCMS(int aUseLCMS)
191 int AliFemtoCorrFctn3DLCMSSym::GetUseLCMS()