]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/AliForwarddNdetaTask.cxx
Various fixes, and possibility to set trigger efficiency
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwarddNdetaTask.cxx
CommitLineData
b2e7f2d6 1//====================================================================
2#include "AliForwarddNdetaTask.h"
3#include <TMath.h>
4#include <TH2D.h>
5#include <TH1D.h>
6#include <THStack.h>
7#include <TList.h>
5bb5d1f6 8#include <TFile.h>
b2e7f2d6 9#include <AliAnalysisManager.h>
10#include <AliAODEvent.h>
11#include <AliAODHandler.h>
12#include <AliAODInputHandler.h>
13#include "AliForwardUtil.h"
01caf91f 14#include "AliAODForwardMult.h"
b2e7f2d6 15
16//____________________________________________________________________
17AliForwarddNdetaTask::AliForwarddNdetaTask()
e1f47419 18 : AliBasedNdetaTask()
fb3430ac 19{
20 //
21 // Constructor
22 //
6ab100ec 23 DGUARD(fDebug, 0, "Default CTOR of AliForwarddNdetaTask");
fb3430ac 24}
b2e7f2d6 25
26//____________________________________________________________________
27AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */)
e1f47419 28 : AliBasedNdetaTask("Forward")
b2e7f2d6 29{
fb3430ac 30 //
31 // Constructor
32 //
33 // Paramters
34 // name Name of task
4bcdcbc1 35 SetTitle("FMD");
6ab100ec 36 DGUARD(fDebug, 0, "Named CTOR of AliForwarddNdetaTask");
b2e7f2d6 37}
38
39//____________________________________________________________________
40AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o)
e1f47419 41 : AliBasedNdetaTask(o)
fb3430ac 42{
43 //
44 // Copy constructor
45 //
6ab100ec 46 DGUARD(fDebug, 0, "Copy CTOR of AliForwarddNdetaTask");
fb3430ac 47}
b2e7f2d6 48
e1f47419 49//____________________________________________________________________
50AliBasedNdetaTask::CentralityBin*
51AliForwarddNdetaTask::MakeCentralityBin(const char* name, Short_t l, Short_t h)
52 const
53{
54 //
55 // Make a new centrality bin
56 //
57 // Parameters:
58 // name Histogram names
59 // l Lower cut
60 // h Upper cut
61 //
62 // Return:
63 // Newly allocated object (of our type)
64 //
6ab100ec 65 DGUARD(fDebug, 3,"Make a centrality bin for AliForwarddNdetaTask: %s [%d,%d]",
66 name, l, h);
e1f47419 67 return new AliForwarddNdetaTask::CentralityBin(name, l, h);
68}
69
e1f47419 70
b2e7f2d6 71//____________________________________________________________________
72TH2D*
fb3430ac 73AliForwarddNdetaTask::GetHistogram(const AliAODEvent* aod, Bool_t mc)
b2e7f2d6 74{
fb3430ac 75 //
76 // Retrieve the histogram
77 //
78 // Parameters:
79 // aod AOD event
80 // mc Whether to get the MC histogram or not
81 //
82 // Return:
83 // Retrieved histogram or null
84 //
fe52e455 85 TObject* obj = 0;
86 if (mc) obj = aod->FindListObject("ForwardMC");
87 else obj = aod->FindListObject("Forward");
b2e7f2d6 88
89 // We should have a forward object at least
fe52e455 90 if (!obj) {
91 if (!mc) AliWarning("No Forward object found AOD");
92 return 0;
93 }
94 AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj);
e1f47419 95 return &(forward->GetHistogram());
96}
fe52e455 97
e1f47419 98//========================================================================
99void
e1f47419 100AliForwarddNdetaTask::CentralityBin::End(TList* sums,
101 TList* results,
ffca499d 102 UShort_t scheme,
f67d699c 103 const TH2F* shapeCorr,
e1f47419 104 Double_t trigEff,
66cf95f2 105 Double_t trigEff0,
e1f47419 106 Bool_t symmetrice,
107 Int_t rebin,
c25b5e1b 108 Bool_t rootProj,
e1f47419 109 Bool_t corrEmpty,
c25b5e1b 110 Bool_t cutEdges,
ffca499d 111 Int_t triggerMask,
9ecab72f 112 Int_t marker,
c89b9ac1 113 Int_t color,
114 TList* mclist,
115 TList* truthlist )
b2e7f2d6 116{
6ab100ec 117 DGUARD(fDebug, 1, "In End of %s with corrEmpty=%d, cutEdges=%d, rootProj=%d",
118 GetName(), corrEmpty, cutEdges, rootProj);
ffca499d 119 AliBasedNdetaTask::CentralityBin::End(sums, results, scheme,
66cf95f2 120 shapeCorr, trigEff, trigEff0,
c25b5e1b 121 symmetrice, rebin,
122 rootProj, corrEmpty, cutEdges,
6ab100ec 123 triggerMask, marker, color, mclist,
124 truthlist);
5bb5d1f6 125
126 if (!IsAllBin()) return;
127 TFile* file = TFile::Open("forward.root", "READ");
128 if (!file) return;
129
130 TList* forward = static_cast<TList*>(file->Get("Forward"));
131 if (!forward) {
132 AliError("List Forward not found in forward.root");
133 return;
134 }
135 TList* rings = static_cast<TList*>(forward->FindObject("ringResults"));
136 if (!rings) {
137 AliError("List ringResults not found in forward.root");
138 return;
139 }
140 THStack* res = static_cast<THStack*>(rings->FindObject("all"));
141 if (!res) {
142 AliError(Form("Stack all not found in %s", rings->GetName()));
143 return;
144 }
145 if (!fTriggers) {
146 AliError("Triggers histogram not set");
147 return;
148 }
66cf95f2 149
5bb5d1f6 150 Double_t ntotal = 0;
151 Double_t epsilonT = trigEff;
66cf95f2 152#if 0
5bb5d1f6 153 // TEMPORARY FIX
154 if (triggerMask == AliAODForwardMult::kNSD) {
155 // This is a local change
156 epsilonT = 0.92;
157 AliWarning(Form("Using hard-coded NSD trigger efficiency of %f",epsilonT));
158 }
66cf95f2 159#endif
5bb5d1f6 160 AliInfo("Adding per-ring histograms to output");
161 Double_t scaler = Normalization(*fTriggers, scheme, epsilonT, ntotal);
162 TIter next(res->GetHists());
163 TH1* hist = 0;
164 while ((hist = static_cast<TH1*>(next()))) hist->Scale(scaler);
165 res->SetName("dndetaRings");
166 fOutput->Add(res);
b2e7f2d6 167}
168
169//________________________________________________________________________
fe52e455 170//
171// EOF
172//