15 #include "AliOADBContainer.h"
16 #include "AliAnalysisManager.h"
17 #include "AliVEvent.h"
18 #include "AliEventplane.h"
19 #include "AliCentrality.h"
22 #include "AliAODEvent.h"
62 DGUARD(fDebug, 3,
"Default CTOR of AliFMDEventPlaneFinder");
68 :
TNamed(
"fmdEventPlaneFinder", title),
102 DGUARD(
fDebug, 3,
"Named CTOR of AliFMDEventPlaneFinder: %s", title);
118 fHepFMDA(o.fHepFMDA),
119 fHepFMDC(o.fHepFMDC),
120 fHepFMDQC1(o.fHepFMDQC1),
121 fHepFMDQC2(o.fHepFMDQC2),
122 fHdiffFMDAC(o.fHdiffFMDAC),
123 fHdiffFMDTPC(o.fHdiffFMDTPC),
124 fHdiffFMDVZERO(o.fHdiffFMDVZERO),
125 fHcorrFMDAC(o.fHcorrFMDAC),
126 fHcorrFMDTPC(o.fHcorrFMDTPC),
127 fHcorrFMDVZERO(o.fHcorrFMDVZERO),
130 fOADBFileName(o.fOADBFileName),
131 fOADBContainer(o.fOADBContainer),
132 fPhiDist(o.fPhiDist),
133 fRunNumber(o.fRunNumber),
134 fUsePhiWeights(o.fUsePhiWeights)
142 DGUARD(
fDebug, 3,
"Copy CTOR of AliFMDEventPlaneFinder");
166 DGUARD(
fDebug,3,
"Assignment of AliFMDEventPlaneFinder");
167 if (&o ==
this)
return *
this;
168 TNamed::operator=(o);
207 TH1D* ret =
new TH1D(name, Form(
"#Psi_{R} - %s",title), 100, 0, TMath::Pi());
208 ret->SetDirectory(0);
209 ret->SetXTitle(
"#Psi_{R} [radians]");
210 ret->SetYTitle(
"Events");
211 ret->SetLineColor(color);
212 ret->SetFillColor(color);
213 ret->SetFillStyle(3001);
225 TH1D* ret =
new TH1D(name, Form(
"#Delta#Psi_{R} - %s minus %s",first,second),
226 100, -TMath::Pi()/2, +TMath::Pi()/2);
227 ret->SetDirectory(0);
228 ret->SetXTitle(Form(
"#Psi_{R,%s}-#Psi_{R,%s} [radians]", first, second));
229 ret->SetYTitle(
"Events");
230 ret->SetLineColor(color);
231 ret->SetFillColor(color);
232 ret->SetFillStyle(3001);
244 TH2F* ret =
new TH2F(name, Form(
"#Psi_{R} - %s vs %s", first, second),
245 100, 0, TMath::Pi(), 100, 0, TMath::Pi());
246 ret->SetDirectory(0);
248 ret->SetXTitle(Form(
"#Psi_{R,%s} [radians]", first));
249 ret->SetYTitle(Form(
"#Psi_{R,%s} [radians]", second));
250 ret->SetZTitle(
"Events");
264 DGUARD(
fDebug,1,
"Initalization of AliFMDEventPlaneFinder");
280 fHPhi =
new TH2D(
"hPhi",
"Phi distribution in FMD",
281 etaAxis.GetNbins(), etaAxis.GetXmin(), etaAxis.GetXmax(),
282 20, 0., TMath::TwoPi());
284 fHPhi->SetXTitle(
"#eta");
285 fHPhi->SetYTitle(
"#phi [radians]");
286 fHPhi->SetZTitle(
"Events");
287 fHPhi->SetDirectory(0);
295 fOADBFileName = Form(
"%s/PWGLF/FORWARD/FMDEVENTPLANE/data/fmdEPoadb.root",
296 AliAnalysisManager::GetOADBPath());
299 if(!foadb.IsOpen()) {
300 AliError(Form(
"Cannot open OADB file %s",
fOADBFileName.Data()));
305 AliError(Form(
"No OADB container found in %s",
fOADBFileName.Data()));
321 DGUARD(
fDebug,1,
"Define output of AliFMDEventPlaneFinder");
324 fList->SetName(GetName());
346 DGUARD(
fDebug,1,
"Find the event plane in AliFMDEventPlaneFinder");
361 Char_t r = (q == 0 ?
'I' :
'O');
388 DGUARD(
fDebug,5,
"Calculate Q-vectors in AliFMDEventPlaneFinder");
389 Double_t phi = 0, eta = 0, weight = 0;
390 for (
Int_t e = 1; e <= h->GetNbinsX(); e++) {
392 eta = h->GetXaxis()->GetBinCenter(e);
393 for (
Int_t p = 1; p <= h->GetNbinsY(); p++) {
394 phi = h->GetYaxis()->GetBinCenter(p);
395 weight = h->GetBinContent(e, p);
398 if (e > 168 && p == 14) {
399 weight = h->GetBinContent(e, 4);
402 fHPhi->Fill(eta, phi, weight);
404 fHPhi->Fill(eta, -1., weight);
407 qx += weight*TMath::Cos(2.*phi);
408 qy += weight*TMath::Sin(2.*phi);
410 TVector2 qVec(qx, qy);
412 if (eta < 0)
fQa += qVec;
413 if (eta > 0)
fQc += qVec;
432 DGUARD(
fDebug,6,
"Calculate Event plane in AliFMDEventPlaneFinder");
435 if (v.Mod() == 0.)
return ep;
441 AliInfo(Form(
"Eventplane found to be: %f", ep));
451 if (diff < TMath::Pi()/2) diff = TMath::Pi() - diff;
452 if (diff >= TMath::Pi()/2) diff = TMath::Pi() - diff;
463 DGUARD(
fDebug,2,
"Fill histograms in AliFMDEventPlaneFinder");
481 AliEventplane* ep =
fEvent->GetEventplane();
482 Double_t tpcEP = (ep ? ep->GetEventplane(
"Q") : -1);
509 if (phiDistValue > 0) phiWeight = nParticles/nPhiBins/phiDistValue;
546 #define PFV(N,VALUE) \
548 AliForwardUtil::PrintName(N); \
549 std::cout << (VALUE) << std::endl; } while(false)
550 #define PFB(N,FLAG) \
552 AliForwardUtil::PrintName(N); \
553 std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
567 gROOT->IncreaseDirLevel();
568 PFB(
"Is active",
true);
571 gROOT->DecreaseDirLevel();
void FillHists(AliAODForwardEP *fmdEP)
virtual void SetupForData(const TAxis &etaAxis)
Double_t CalcDifference(Double_t a1, Double_t a2) const
AliFMDEventPlaneFinder & operator=(const AliFMDEventPlaneFinder &o)
const TH1D & GetHistogram() const
Double_t CalcEventplane(const TVector2 &v) const
TH2F * MakeCorrHist(const char *name, const char *first, const char *second)
void SetEventplaneA(Double_t epA)
virtual void CreateOutputObjects(TList *dir)
AliOADBContainer * fOADBContainer
void SetEventplaneC(Double_t epC)
ClassImp(AliFMDEventPlaneFinder) AliFMDEventPlaneFinder
void CalcQVectors(TH2D *h, TH1D *eHist)
Double_t GetEventplaneA()
Double_t GetEventplaneC()
void Print(Option_t *option="") const
TH1D * MakePsiRHist(const char *name, const char *title, Int_t color)
#define DGUARD(L, N, F,...)
TH1D * MakeDiffHist(const char *name, const char *first, const char *second, Int_t color)
static void PrintTask(const TObject &o)
void SetEventplane(Double_t ep)
TH2D * Get(UShort_t d, Char_t r) const
virtual ~AliFMDEventPlaneFinder()
void SetRunNumber(Int_t run)
Bool_t FindEventplane(AliVEvent *esd, AliAODForwardEP &aodEp, TH2D *h, AliForwardUtil::Histos *hists)
Double_t GetPhiWeight(Int_t etaBin, Int_t phiBin) const