]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoCorrFctn3DLCMSSym.cxx
modified Azimuthal HBT analysis (Vera R. Loggins <veraloggins@wayne.edu>)
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoCorrFctn3DLCMSSym.cxx
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
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.                                //
8 //                                                                       //
9 ///////////////////////////////////////////////////////////////////////////
10
11 #include "AliFemtoCorrFctn3DLCMSSym.h"
12 #include <cstdio>
13
14 #ifdef __ROOT__ 
15 ClassImp(AliFemtoCorrFctn3DLCMSSym)
16 #endif
17
18 //____________________________
19 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(char* title, const int& nbins, const float& QHi)
20   :
21   AliFemtoCorrFctn(),
22   fNumerator(0),
23   fDenominator(0)
24 {
25   // Basic constructor
26
27   // set up numerator
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);
31   // set up denominator
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);
35
36   // to enable error bar calculation...
37   fNumerator->Sumw2();
38   fDenominator->Sumw2();
39 }
40
41 AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn) :
42   AliFemtoCorrFctn(aCorrFctn),
43   fNumerator(0),
44   fDenominator(0)
45 {
46   // Copy constructor
47   fNumerator = new TH3F(*aCorrFctn.fNumerator);
48   fDenominator = new TH3F(*aCorrFctn.fDenominator);
49 }
50 //____________________________
51 AliFemtoCorrFctn3DLCMSSym::~AliFemtoCorrFctn3DLCMSSym(){
52   // Destructor
53   delete fNumerator;
54   delete fDenominator;
55 }
56 //_________________________
57 AliFemtoCorrFctn3DLCMSSym& AliFemtoCorrFctn3DLCMSSym::operator=(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn)
58 {
59   // assignment operator
60   if (this == &aCorrFctn)
61     return *this;
62
63   if (fNumerator) delete fNumerator;
64   fNumerator = new TH3F(*aCorrFctn.fNumerator);
65   if (fDenominator) delete fDenominator;
66   fDenominator = new TH3F(*aCorrFctn.fDenominator);
67
68   return *this;
69 }
70
71 //_________________________
72 void AliFemtoCorrFctn3DLCMSSym::WriteOutHistos(){
73   // Write out all histograms to file
74   fNumerator->Write();
75   fDenominator->Write();
76 }
77 //______________________________
78 TList* AliFemtoCorrFctn3DLCMSSym::GetOutputList()
79 {
80   // Prepare the list of objects to be written to the output
81   TList *tOutputList = new TList();
82
83   tOutputList->Add(fNumerator); 
84   tOutputList->Add(fDenominator);  
85
86   return tOutputList;
87 }
88
89 //_________________________
90 void AliFemtoCorrFctn3DLCMSSym::Finish(){
91   // here is where we should normalize, fit, etc...
92
93 }
94
95 //____________________________
96 AliFemtoString AliFemtoCorrFctn3DLCMSSym::Report(){
97   // Construct the report
98   string stemp = "LCMS Frame Bertsch-Pratt 3D Correlation Function Report:\n";
99   char ctemp[100];
100   snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNumerator->GetEntries());
101   stemp += ctemp;
102   snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDenominator->GetEntries());
103   stemp += ctemp;
104
105   if (fPairCut){
106     snprintf(ctemp , 100, "Here is the PairCut specific to this CorrFctn\n");
107     stemp += ctemp;
108     stemp += fPairCut->Report();
109   }
110   else{
111     snprintf(ctemp , 100, "No PairCut specific to this CorrFctn\n");
112     stemp += ctemp;
113   }
114
115   //  
116   AliFemtoString returnThis = stemp;
117   return returnThis;
118 }
119 //____________________________
120 void AliFemtoCorrFctn3DLCMSSym::AddRealPair( AliFemtoPair* pair){
121   // perform operations on real pairs
122   if (fPairCut){
123     if (!(fPairCut->Pass(pair))) return;
124   }
125
126   double qOut = (pair->QOutCMS());
127   double qSide = (pair->QSideCMS());
128   double qLong = (pair->QLongCMS());
129
130   if (qLong > 0.0)
131     fNumerator->Fill(qOut,qSide,qLong);
132   else
133     fNumerator->Fill(-qOut,-qSide,-qLong);
134     
135 }
136 //____________________________
137 void AliFemtoCorrFctn3DLCMSSym::AddMixedPair( AliFemtoPair* pair){
138   // perform operations on mixed pairs
139   if (fPairCut){
140     if (!(fPairCut->Pass(pair))) return;
141   }
142
143   double qOut = (pair->QOutCMS());
144   double qSide = (pair->QSideCMS());
145   double qLong = (pair->QLongCMS());
146
147   if (qLong > 0.0)
148     fDenominator->Fill(qOut,qSide,qLong,1.0);
149   else
150     fDenominator->Fill(-qOut,-qSide,-qLong,1.0);
151 }
152
153