]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoModelCorrFctn.cxx
Migration of PWG2/FEMTOSCOPY to PWGCF/FEMTOSCOPY
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoModelCorrFctn.cxx
CommitLineData
76ce4b5b 1////////////////////////////////////////////////////////////////////////////////
2/// ///
3/// AliFemtoModelCorrFctn - the base class for correlation function which ///
4/// uses the model framework and weight generation ///
5/// ///
6////////////////////////////////////////////////////////////////////////////////
7#ifdef __ROOT__
8 ClassImp(AliFemtoModelCorrFctn, 1)
9#endif
10
11#include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
12#include "AliFemtoModelHiddenInfo.h"
13#include "AliFemtoModelCorrFctn.h"
14#include "AliFemtoPair.h"
15#include "AliFemtoModelManager.h"
16#include <TH1D.h>
17
18//_______________________
19AliFemtoModelCorrFctn::AliFemtoModelCorrFctn():
20 AliFemtoCorrFctn(),
21 fManager(0),
22 fNumeratorTrue(0),
23 fNumeratorFake(0),
24 fDenominator(0)
25{
26 // Default constructor
27 fNumeratorTrue = new TH1D("ModelNumTrue","ModelNumTrue",50,0.0,0.5);
28 fNumeratorFake = new TH1D("ModelNumFake","ModelNumFake",50,0.0,0.5);
29 fDenominator = new TH1D("ModelDen","ModelDen",50,0.0,0.5);
30
31 fNumeratorTrue->Sumw2();
32 fNumeratorFake->Sumw2();
33 fDenominator->Sumw2();
34}
35//_______________________
36AliFemtoModelCorrFctn::AliFemtoModelCorrFctn(const char *title, Int_t aNbins, Double_t aQinvLo, Double_t aQinvHi):
37 AliFemtoCorrFctn(),
38 fManager(0),
39 fNumeratorTrue(0),
40 fNumeratorFake(0),
41 fDenominator(0)
42{
43 // Normal constructor
44 char buf[100];
45 snprintf(buf , 100, "NumTrue%s", title);
46 fNumeratorTrue = new TH1D(buf,buf,aNbins,aQinvLo,aQinvHi);
47 snprintf(buf , 100, "NumFake%s", title);
48 fNumeratorFake = new TH1D(buf,buf,aNbins,aQinvLo,aQinvHi);
49 snprintf(buf , 100, "Den%s", title);
50 fDenominator = new TH1D(buf,buf,aNbins,aQinvLo,aQinvHi);
51
52 fNumeratorTrue->Sumw2();
53 fNumeratorFake->Sumw2();
54 fDenominator->Sumw2();
55}
56//_______________________
57AliFemtoModelCorrFctn::AliFemtoModelCorrFctn(const AliFemtoModelCorrFctn& aCorrFctn) :
58 AliFemtoCorrFctn(),
59 fManager(0),
60 fNumeratorTrue(0),
61 fNumeratorFake(0),
62 fDenominator(0)
63{
64 // Copy constructor
65 if (aCorrFctn.fNumeratorTrue)
66 fNumeratorTrue = new TH1D(*(aCorrFctn.fNumeratorTrue));
67 if (aCorrFctn.fNumeratorFake)
68 fNumeratorFake = new TH1D(*(aCorrFctn.fNumeratorFake));
69 if (aCorrFctn.fDenominator)
70 fDenominator = new TH1D(*(aCorrFctn.fDenominator));
71 fManager = aCorrFctn.fManager;
72}
73//_______________________
74AliFemtoModelCorrFctn::~AliFemtoModelCorrFctn()
75{
76 // Destructor
77 if (fNumeratorTrue) delete fNumeratorTrue;
78 if (fNumeratorFake) delete fNumeratorFake;
79 if (fDenominator) delete fDenominator;
80}
81//_______________________
82AliFemtoModelCorrFctn& AliFemtoModelCorrFctn::operator=(const AliFemtoModelCorrFctn& aCorrFctn)
83{
84 // Assignment operator
85 if (this == &aCorrFctn)
86 return *this;
87
88 if (aCorrFctn.fNumeratorTrue)
89 fNumeratorTrue = new TH1D(*(aCorrFctn.fNumeratorTrue));
90 else
91 fNumeratorTrue = 0;
92 if (aCorrFctn.fNumeratorFake)
93 fNumeratorFake = new TH1D(*(aCorrFctn.fNumeratorFake));
94 else
95 fNumeratorFake = 0;
96 if (aCorrFctn.fDenominator)
97 fDenominator = new TH1D(*(aCorrFctn.fDenominator));
98 else
99 fDenominator = 0;
100 fManager = aCorrFctn.fManager;
101
102 return *this;
103}
104//_______________________
105void AliFemtoModelCorrFctn::ConnectToManager(AliFemtoModelManager *aManager)
106{
107 fManager = aManager;
108}
109
110//_______________________
111AliFemtoString AliFemtoModelCorrFctn::Report()
112{
113 // Prepare report
114 AliFemtoString tStr = "AliFemtoModelCorrFctn report";
115
116 return tStr;
117}
118
119//_______________________
120void AliFemtoModelCorrFctn::AddRealPair(AliFemtoPair* aPair)
121{
122 Double_t weight = fManager->GetWeight(aPair);
123 fNumeratorTrue->Fill(aPair->QInv(), weight);
124}
125//_______________________
126void AliFemtoModelCorrFctn::AddMixedPair(AliFemtoPair* aPair)
127{
128 Double_t weight = fManager->GetWeight(aPair);
129 fNumeratorFake->Fill(aPair->QInv(), weight);
130 fDenominator->Fill(aPair->QInv(), 1.0);
131}
132//_______________________
133void AliFemtoModelCorrFctn::EventBegin(const AliFemtoEvent* /* aEvent */)
134{
135 /* Do nothing */
136}
137//_______________________
138void AliFemtoModelCorrFctn::EventEnd(const AliFemtoEvent* /* aEvent */)
139{
140 /* Do nothing */
141}
142//_______________________
143void AliFemtoModelCorrFctn::Finish()
144{
145 /* Do nothing */
146}
147//_______________________
148void AliFemtoModelCorrFctn::Write()
149{
150 // Write out data histos
151 fNumeratorTrue->Write();
152 fNumeratorFake->Write();
153 fDenominator->Write();
154}
155//_______________________
156AliFemtoModelCorrFctn* AliFemtoModelCorrFctn::Clone()
157{
158 // Create clone
159 AliFemtoModelCorrFctn *tCopy = new AliFemtoModelCorrFctn(*this);
160
161 return tCopy;
162}
163//_________________________
164TList* AliFemtoModelCorrFctn::GetOutputList()
165{
166 // Prepare the list of objects to be written to the output
167 TList *tOutputList = new TList();
168
169 tOutputList->Add(fNumeratorTrue);
170 tOutputList->Add(fNumeratorFake);
171 tOutputList->Add(fDenominator);
172
173 return tOutputList;
174}