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"
15 ClassImp(AliFemtoCorrFctn3DLCMSSym)
18 //____________________________
19 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(char* title, const int& nbins, const float& QHi)
28 char tTitNum[101] = "Num";
29 strncat(tTitNum,title, 100);
30 fNumerator = new TH3F(tTitNum,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins/2,0.0,QHi);
32 char tTitDen[101] = "Den";
33 strncat(tTitDen,title, 100);
34 fDenominator = new TH3F(tTitDen,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins/2,0.0,QHi);
36 // to enable error bar calculation...
38 fDenominator->Sumw2();
41 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn) :
42 AliFemtoCorrFctn(aCorrFctn),
47 fNumerator = new TH3F(*aCorrFctn.fNumerator);
48 fDenominator = new TH3F(*aCorrFctn.fDenominator);
50 //____________________________
51 AliFemtoCorrFctn3DLCMSSym::~AliFemtoCorrFctn3DLCMSSym(){
56 //_________________________
57 AliFemtoCorrFctn3DLCMSSym& AliFemtoCorrFctn3DLCMSSym::operator=(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn)
59 // assignment operator
60 if (this == &aCorrFctn)
63 if (fNumerator) delete fNumerator;
64 fNumerator = new TH3F(*aCorrFctn.fNumerator);
65 if (fDenominator) delete fDenominator;
66 fDenominator = new TH3F(*aCorrFctn.fDenominator);
71 //_________________________
72 void AliFemtoCorrFctn3DLCMSSym::WriteOutHistos(){
73 // Write out all histograms to file
75 fDenominator->Write();
77 //______________________________
78 TList* AliFemtoCorrFctn3DLCMSSym::GetOutputList()
80 // Prepare the list of objects to be written to the output
81 TList *tOutputList = new TList();
83 tOutputList->Add(fNumerator);
84 tOutputList->Add(fDenominator);
89 //_________________________
90 void AliFemtoCorrFctn3DLCMSSym::Finish(){
91 // here is where we should normalize, fit, etc...
95 //____________________________
96 AliFemtoString AliFemtoCorrFctn3DLCMSSym::Report(){
97 // Construct the report
98 string stemp = "LCMS Frame Bertsch-Pratt 3D Correlation Function Report:\n";
100 snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNumerator->GetEntries());
102 snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDenominator->GetEntries());
106 snprintf(ctemp , 100, "Here is the PairCut specific to this CorrFctn\n");
108 stemp += fPairCut->Report();
111 snprintf(ctemp , 100, "No PairCut specific to this CorrFctn\n");
116 AliFemtoString returnThis = stemp;
119 //____________________________
120 void AliFemtoCorrFctn3DLCMSSym::AddRealPair( AliFemtoPair* pair){
121 // perform operations on real pairs
123 if (!(fPairCut->Pass(pair))) return;
126 double qOut = (pair->QOutCMS());
127 double qSide = (pair->QSideCMS());
128 double qLong = (pair->QLongCMS());
131 fNumerator->Fill(qOut,qSide,qLong);
133 fNumerator->Fill(-qOut,-qSide,-qLong);
136 //____________________________
137 void AliFemtoCorrFctn3DLCMSSym::AddMixedPair( AliFemtoPair* pair){
138 // perform operations on mixed pairs
140 if (!(fPairCut->Pass(pair))) return;
143 double qOut = (pair->QOutCMS());
144 double qSide = (pair->QSideCMS());
145 double qLong = (pair->QLongCMS());
148 fDenominator->Fill(qOut,qSide,qLong,1.0);
150 fDenominator->Fill(-qOut,-qSide,-qLong,1.0);