17 #include "AliTriggerAnalysis.h"
18 #include "AliPhysicsSelection.h"
20 #include "AliESDEvent.h"
21 #include "AliMCEvent.h"
22 #include "AliAODHandler.h"
23 #include "AliMultiplicity.h"
24 #include "AliInputEventHandler.h"
26 #include "AliAnalysisManager.h"
28 #include <TDirectory.h>
32 #define PRIMARY_SLOT 5
34 # define DEFINE(N,C) DefineOutput(N,C)
35 # define POST(N,O) PostData(N,O)
37 # define DEFINE(N,C) do { } while(false)
38 # define POST(N,O) do { } while(false)
41 # define MAKE_SW(NAME) do {} while(false)
42 # define START_SW(NAME) do {} while(false)
43 # define FILL_SW(NAME,WHICH) do {} while(false)
45 # define MAKE_SW(NAME) TStopwatch NAME
46 # define START_SW(NAME) if (fDoTiming) NAME.Start(true)
47 # define FILL_SW(NAME,WHICH) \
48 if (fDoTiming) fHTiming->Fill(WHICH,NAME.CpuTime())
83 fEventInspector(
"event"),
85 fESDFixer(
"esdFizer"),
86 fSharingFilter(
"sharing"),
87 fDensityCalculator(
"density"),
88 fCorrections(
"corrections"),
89 fHistCollector(
"collector"),
90 fEventPlaneFinder(
"eventplane")
98 fPrimary =
new TH2D(
"primary",
"MC Primaries", 1,0,1,20,0,TMath::TwoPi());
100 fPrimary->SetYTitle(
"#varphi [radians]");
101 fPrimary->SetZTitle(
"d^{2}N_{ch}/d#etad#phi");
106 DEFINE(PRIM_SLOT, TH2D::Class());
128 ah->AddBranch(
"AliAODForwardMult", &mcobj);
160 DMSG(fDebug,0,
"Primary histogram rebinned to %d,%f,%f eta axis %d,%f,%f",
170 mcRings->SetName(
"mcRingSums");
221 AliMCEvent* mcEvent = MCEvent();
222 if (!mcEvent || !mcEvent->Stack())
return false;
227 TVector3 ip(1024, 1024, 0);
231 ivz, ip, cent, nClusters);
233 TVector3 ipMC(1024, 1024, 0);
307 AliWarning(
"Sharing filter failed!");
312 AliWarning(
"MC Sharing filter failed!");
318 fPrimary->SetBinContent(0, 0, ipMC.Z());
338 AliWarning(
"Density calculator failed!");
343 AliWarning(
"MC Density calculator failed!");
354 AliWarning(
"Eventplane finder failed!");
363 AliWarning(
"Corrections failed");
368 AliWarning(
"MC Corrections failed");
385 AliWarning(
"Histogram collector failed");
396 AliWarning(
"MC Histogram collector failed");
404 Int_t nEta = hMC.GetNbinsX();
405 Int_t nY = hMC.GetNbinsY();
406 for (
Int_t iEta = 1; iEta <= nEta; iEta++) {
407 hMC.SetBinContent(iEta, nY+1, hMC.GetBinContent(iEta, 0));
Bool_t FilterMC(const AliESDFMD &input, const AliMCEvent &event, const TVector3 &ip, AliESDFMD &output, TH2D *primary)
virtual void CreateBranches(AliAODHandler *ah)
void Clear(Option_t *option="")
void SetTriggerBits(UInt_t bits)
AliForwardMCMultiplicityTask()
void SetSecondaryForMC(Bool_t use)
virtual Bool_t CompareResults(Double_t vz, Double_t trueVz, Double_t cent, Double_t mcC, Double_t b, Int_t npart, Int_t nbin)
AliAODForwardMult fMCAODFMD
void SetNClusters(UShort_t n)
void SetSNN(UShort_t sNN)
void Clear(Option_t *option="")
virtual Bool_t Event(AliESDEvent &esd)
AliForwardUtil::Histos fMCRingSums
const AliFMDMCTrackDensity & GetTrackDensity() const
AliFMDMCDensityCalculator fDensityCalculator
void SetCentrality(Float_t c)
#define DMSG(L, N, F,...)
virtual void MarkEventForStore() const
void Clear(Option_t *option="")
virtual Bool_t CompareResults(AliForwardUtil::Histos &esd, AliForwardUtil::Histos &mc)
virtual void CreateBranches(AliAODHandler *ah)
AliForwardUtil::Histos fMCHistos
virtual Bool_t Correct(AliForwardUtil::Histos &hists, UShort_t vtxBin)
UInt_t Process(const AliESDEvent *event, UInt_t &triggers, Bool_t &lowFlux, UShort_t &ivz, TVector3 &ip, Double_t ¢, UShort_t &nClusters)
static Color_t RingColor(UShort_t d, Char_t r)
void Init(const TAxis &etaAxis)
UShort_t GetCollisionSystem() const
virtual void EstimatedNdeta(const TList *input, TList *output) const
static Bool_t IsTriggerBits(UInt_t bits, UInt_t trg)
virtual Bool_t CalculateMC(const AliESDFMD &fmd, AliForwardUtil::Histos &hists)
Bool_t Filter(const AliESDFMD &input, Bool_t lowFlux, AliESDFMD &output, Double_t zvtx)
AliForwardUtil::Histos fRingSums
#define FILL_SW(NAME, WHICH)
virtual Bool_t Collect(const AliForwardUtil::Histos &hists, AliForwardUtil::Histos &sums, UShort_t vtxBin, TH2D &out, Double_t cent=-1.0, Bool_t eta2phi=false, Bool_t add=true)
virtual Bool_t CompareResults(AliForwardUtil::Histos &esd, AliForwardUtil::Histos &mc)
void SetSystem(UShort_t sys)
AliAODForwardMult fAODFMD
AliFMDMCCorrector fCorrections
virtual Bool_t PostEvent()
void SetUseOnlyPrimary(Bool_t use)
void SetRecoNoiseFactor(Int_t f)
virtual Bool_t PostEvent()
virtual void ReadProductionDetails(AliMCEvent *event)
virtual void EstimatedNdeta(const TList *input, TList *output) const
virtual Bool_t Calculate(const AliESDFMD &fmd, AliForwardUtil::Histos &hists, Bool_t lowFlux, Double_t cent=-1, const TVector3 &ip=TVector3(1024, 1024, 0))
virtual Bool_t CorrectMC(AliForwardUtil::Histos &hists, UShort_t vtxBin)
TH2D * Get(UShort_t d, Char_t r) const
virtual void InitMembers(const TAxis &pe, const TAxis &pv)
AliForwardUtil::Histos fHistos
virtual void InitMembers(const TAxis &pe, const TAxis &pv)
virtual Bool_t PreEvent()
AliFMDHistCollector fHistCollector
void Init(const TAxis &etaAxis)
virtual void MakeRingdNdeta(const TList *input, const char *inName, TList *output, const char *outName, Int_t style=20) const
UInt_t ProcessMC(AliMCEvent *event, UInt_t &triggers, UShort_t &ivz, TVector3 &ip, Double_t &b, Double_t &c, Int_t &npart, Int_t &nbin, Double_t &phiR)
AliFMDEventPlaneFinder fEventPlaneFinder
UShort_t GetEnergy() const
AliFMDMCSharingFilter fSharingFilter
Float_t GetCentrality() const
void CompareResults(const AliESDFMD &esd, const AliESDFMD &mc)
Bool_t FindEventplane(AliVEvent *esd, AliAODForwardEP &aodEp, TH2D *h, AliForwardUtil::Histos *hists)
AliFMDMCEventInspector fEventInspector
void Fix(AliESDFMD &esd, const TVector3 &ip)
AliFMDESDFixer & GetESDFixer()
static void RebinEta(TH2D *hist, const TAxis &etaAxis)
const TH2D & GetHistogram() const
void SetOnlyPrimary(Bool_t use)