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);
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();
Int_t color[]
print message on plot with ok/not ok
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)
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