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