1 //====================================================================
2 #include "AliForwarddNdetaTask.h"
9 #include <AliAnalysisManager.h>
10 #include <AliAODEvent.h>
11 #include <AliAODHandler.h>
12 #include <AliAODInputHandler.h>
13 #include "AliForwardUtil.h"
14 #include "AliAODForwardMult.h"
16 //____________________________________________________________________
17 AliForwarddNdetaTask::AliForwarddNdetaTask()
25 //____________________________________________________________________
26 AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */)
27 : AliBasedNdetaTask("Forward")
36 //____________________________________________________________________
37 AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o)
38 : AliBasedNdetaTask(o)
45 //____________________________________________________________________
46 AliBasedNdetaTask::CentralityBin*
47 AliForwarddNdetaTask::MakeCentralityBin(const char* name, Short_t l, Short_t h)
51 // Make a new centrality bin
54 // name Histogram names
59 // Newly allocated object (of our type)
61 return new AliForwarddNdetaTask::CentralityBin(name, l, h);
65 //____________________________________________________________________
67 AliForwarddNdetaTask::GetHistogram(const AliAODEvent* aod, Bool_t mc)
70 // Retrieve the histogram
74 // mc Whether to get the MC histogram or not
77 // Retrieved histogram or null
80 if (mc) obj = aod->FindListObject("ForwardMC");
81 else obj = aod->FindListObject("Forward");
83 // We should have a forward object at least
85 if (!mc) AliWarning("No Forward object found AOD");
88 AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj);
89 return &(forward->GetHistogram());
92 //========================================================================
94 AliForwarddNdetaTask::CentralityBin::End(TList* sums,
110 AliInfo(Form("In End of %s with corrEmpty=%d, cutEdges=%d, rootProj=%d",
111 GetName(), corrEmpty, cutEdges, rootProj));
112 AliBasedNdetaTask::CentralityBin::End(sums, results, scheme,
115 rootProj, corrEmpty, cutEdges,
116 triggerMask, marker, color, mclist, truthlist);
118 if (!IsAllBin()) return;
119 TFile* file = TFile::Open("forward.root", "READ");
122 TList* forward = static_cast<TList*>(file->Get("Forward"));
124 AliError("List Forward not found in forward.root");
127 TList* rings = static_cast<TList*>(forward->FindObject("ringResults"));
129 AliError("List ringResults not found in forward.root");
132 THStack* res = static_cast<THStack*>(rings->FindObject("all"));
134 AliError(Form("Stack all not found in %s", rings->GetName()));
138 AliError("Triggers histogram not set");
142 Double_t epsilonT = trigEff;
144 if (triggerMask == AliAODForwardMult::kNSD) {
145 // This is a local change
147 AliWarning(Form("Using hard-coded NSD trigger efficiency of %f",epsilonT));
149 AliInfo("Adding per-ring histograms to output");
150 Double_t scaler = Normalization(*fTriggers, scheme, epsilonT, ntotal);
151 TIter next(res->GetHists());
153 while ((hist = static_cast<TH1*>(next()))) hist->Scale(scaler);
154 res->SetName("dndetaRings");
158 //________________________________________________________________________