1 ////////////////////////////////////////////////////////////////////////////////
3 /// AliFemtoModelCorrFctn - the base class for correlation function which ///
4 /// uses the model framework and weight generation ///
6 ////////////////////////////////////////////////////////////////////////////////
8 ClassImp(AliFemtoModelCorrFctn, 1)
11 #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
12 #include "AliFemtoModelHiddenInfo.h"
13 #include "AliFemtoModelCorrFctn.h"
14 #include "AliFemtoPair.h"
15 #include "AliFemtoModelManager.h"
18 //_______________________
19 AliFemtoModelCorrFctn::AliFemtoModelCorrFctn():
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);
31 fNumeratorTrue->Sumw2();
32 fNumeratorFake->Sumw2();
33 fDenominator->Sumw2();
35 //_______________________
36 AliFemtoModelCorrFctn::AliFemtoModelCorrFctn(const char *title, Int_t aNbins, Double_t aQinvLo, Double_t aQinvHi):
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);
52 fNumeratorTrue->Sumw2();
53 fNumeratorFake->Sumw2();
54 fDenominator->Sumw2();
56 //_______________________
57 AliFemtoModelCorrFctn::AliFemtoModelCorrFctn(const AliFemtoModelCorrFctn& aCorrFctn) :
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;
73 //_______________________
74 AliFemtoModelCorrFctn::~AliFemtoModelCorrFctn()
77 if (fNumeratorTrue) delete fNumeratorTrue;
78 if (fNumeratorFake) delete fNumeratorFake;
79 if (fDenominator) delete fDenominator;
81 //_______________________
82 AliFemtoModelCorrFctn& AliFemtoModelCorrFctn::operator=(const AliFemtoModelCorrFctn& aCorrFctn)
84 // Assignment operator
85 if (this == &aCorrFctn)
88 if (aCorrFctn.fNumeratorTrue)
89 fNumeratorTrue = new TH1D(*(aCorrFctn.fNumeratorTrue));
92 if (aCorrFctn.fNumeratorFake)
93 fNumeratorFake = new TH1D(*(aCorrFctn.fNumeratorFake));
96 if (aCorrFctn.fDenominator)
97 fDenominator = new TH1D(*(aCorrFctn.fDenominator));
100 fManager = aCorrFctn.fManager;
104 //_______________________
105 void AliFemtoModelCorrFctn::ConnectToManager(AliFemtoModelManager *aManager)
110 //_______________________
111 AliFemtoString AliFemtoModelCorrFctn::Report()
114 AliFemtoString tStr = "AliFemtoModelCorrFctn report";
119 //_______________________
120 void AliFemtoModelCorrFctn::AddRealPair(AliFemtoPair* aPair)
122 Double_t weight = fManager->GetWeight(aPair);
123 fNumeratorTrue->Fill(aPair->QInv(), weight);
125 //_______________________
126 void AliFemtoModelCorrFctn::AddMixedPair(AliFemtoPair* aPair)
128 Double_t weight = fManager->GetWeight(aPair);
129 fNumeratorFake->Fill(aPair->QInv(), weight);
130 fDenominator->Fill(aPair->QInv(), 1.0);
132 //_______________________
133 void AliFemtoModelCorrFctn::EventBegin(const AliFemtoEvent* /* aEvent */)
137 //_______________________
138 void AliFemtoModelCorrFctn::EventEnd(const AliFemtoEvent* /* aEvent */)
142 //_______________________
143 void AliFemtoModelCorrFctn::Finish()
147 //_______________________
148 void AliFemtoModelCorrFctn::Write()
150 // Write out data histos
151 fNumeratorTrue->Write();
152 fNumeratorFake->Write();
153 fDenominator->Write();
155 //_______________________
156 AliFemtoModelCorrFctn* AliFemtoModelCorrFctn::Clone()
159 AliFemtoModelCorrFctn *tCopy = new AliFemtoModelCorrFctn(*this);
163 //_________________________
164 TList* AliFemtoModelCorrFctn::GetOutputList()
166 // Prepare the list of objects to be written to the output
167 TList *tOutputList = new TList();
169 tOutputList->Add(fNumeratorTrue);
170 tOutputList->Add(fNumeratorFake);
171 tOutputList->Add(fDenominator);