]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FORWARD/analysis2/AliForwarddNdetaTask.cxx
- coverity fix 10184
[u/mrichter/AliRoot.git] / PWG2 / 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>
8#include <AliAnalysisManager.h>
9#include <AliAODEvent.h>
10#include <AliAODHandler.h>
11#include <AliAODInputHandler.h>
12#include "AliForwardUtil.h"
01caf91f 13#include "AliAODForwardMult.h"
b2e7f2d6 14
15//____________________________________________________________________
16AliForwarddNdetaTask::AliForwarddNdetaTask()
fe52e455 17 : AliBasedNdetaTask(),
b2e7f2d6 18 fSumPrimary(0), // Sum of primary histograms
b2e7f2d6 19 fSNNString(0),
20 fSysString(0)
fb3430ac 21{
22 //
23 // Constructor
24 //
25}
b2e7f2d6 26
27//____________________________________________________________________
28AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */)
fe52e455 29 : AliBasedNdetaTask("Forward"),
b2e7f2d6 30 fSumPrimary(0), // Sum of primary histograms
b2e7f2d6 31 fSNNString(0),
32 fSysString(0)
33{
fb3430ac 34 //
35 // Constructor
36 //
37 // Paramters
38 // name Name of task
b2e7f2d6 39}
40
41//____________________________________________________________________
42AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o)
fe52e455 43 : AliBasedNdetaTask(o),
ec82df5b 44 fSumPrimary(o.fSumPrimary), // Sum of primary histograms
ec82df5b 45 fSNNString(o.fSNNString), //
46 fSysString(o.fSysString) //
fb3430ac 47{
48 //
49 // Copy constructor
50 //
51}
b2e7f2d6 52
b2e7f2d6 53//____________________________________________________________________
54TH2D*
fb3430ac 55AliForwarddNdetaTask::GetHistogram(const AliAODEvent* aod, Bool_t mc)
b2e7f2d6 56{
fb3430ac 57 //
58 // Retrieve the histogram
59 //
60 // Parameters:
61 // aod AOD event
62 // mc Whether to get the MC histogram or not
63 //
64 // Return:
65 // Retrieved histogram or null
66 //
fe52e455 67 TObject* obj = 0;
68 if (mc) obj = aod->FindListObject("ForwardMC");
69 else obj = aod->FindListObject("Forward");
b2e7f2d6 70
71 // We should have a forward object at least
fe52e455 72 if (!obj) {
73 if (!mc) AliWarning("No Forward object found AOD");
74 return 0;
75 }
76 AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj);
77
78 // Here, we update the primary stuff
79 if (mc) {
80 TObject* oPrimary = aod->FindListObject("primary");
81 if (oPrimary) {
82 TH2D* primary = static_cast<TH2D*>(oPrimary);
83 // Add contribtion from MC
e58000b7 84
85 if(fTriggerMask == AliAODForwardMult::kInel) {
86 if (primary && !fSumPrimary) fSumPrimary = CloneHist(primary, "truth");
87 else if (primary) fSumPrimary->Add(primary);
88 }
89
90 else if(fTriggerMask == AliAODForwardMult::kNSD && forward->IsTriggerBits(AliAODForwardMult::kMCNSD)) {
91 if (primary && !fSumPrimary) fSumPrimary = CloneHist(primary, "truth");
92 else if (primary) fSumPrimary->Add(primary);
93 }
94
95
96
97 /* if(fTriggerMask == AliAODForwardMult::kNSD && forward->IsTriggerBits(AliAODForwardMult::kMCNSD)) {
fb3430ac 98 if (primary) fSumPrimary->Add(primary);
99
100 }
101
102 else if (primary) fSumPrimary->Add(primary);*/
e58000b7 103
fe52e455 104 }
b2e7f2d6 105 }
e58000b7 106
fe52e455 107 // Here, we get the update
108 if (!fSNNString) {
b2e7f2d6 109 UShort_t sNN = forward->GetSNN();
fe52e455 110 fSNNString = new TNamed("sNN", "");
b2e7f2d6 111 fSNNString->SetTitle(AliForwardUtil::CenterOfMassEnergyString(sNN));
112 fSNNString->SetUniqueID(sNN);
fe52e455 113 fSums->Add(fSNNString);
114
115 UShort_t sys = forward->GetSystem();
116 fSysString = new TNamed("sys", "");
b2e7f2d6 117 fSysString->SetTitle(AliForwardUtil::CollisionSystemString(sys));
118 fSysString->SetUniqueID(sys);
fe52e455 119 fSums->Add(fSysString);
b2e7f2d6 120 }
121
fe52e455 122 return &(forward->GetHistogram());
b2e7f2d6 123}
124
b2e7f2d6 125//________________________________________________________________________
126void
127AliForwarddNdetaTask::Terminate(Option_t *)
128{
129 // Draw result to screen, or perform fitting, normalizations Called
130 // once at the end of the query
fe52e455 131 AliBasedNdetaTask::Terminate("");
8e2bb72a 132 if(!fSums) {
b2e7f2d6 133 AliError("Could not retrieve TList fSums");
134 return;
135 }
b2e7f2d6 136 if (!fOutput) {
fe52e455 137 AliError("Could not retrieve TList fOutput");
138 return;
b2e7f2d6 139 }
140
fe52e455 141 fSumPrimary = static_cast<TH2D*>(fSums->FindObject("truth"));
3846ec25 142
b2e7f2d6 143 fOutput->Add(fSNNString->Clone());
144 fOutput->Add(fSysString->Clone());
b2e7f2d6 145
146 if (fSumPrimary) {
fe52e455 147 Int_t nAll = Int_t(fTriggers->GetBinContent(kAll));
e58000b7 148 Int_t nNSD = Int_t(fTriggers->GetBinContent(kMCNSD));
149
150 // for(Int_t nn =1; nn<=fSumPrimary->GetNbinsX(); nn++) {
151 // for(Int_t mm =1; mm<=fSumPrimary->GetNbinsY(); mm++) {
152 // if(fSumPrimary->GetBinContent(nn,mm) > 0) std::cout<<fSumPrimary->GetBinContent(nn,mm)<<" +/- "<<fSumPrimary->GetBinError(nn,mm)<<std::endl;
153 // }
154 // }
155
156
157 //TH1D* dndetaTruth = ProjectX(fSumPrimary,"dndetaTruth",
158 // 1,fSumPrimary->GetNbinsY(),false,true);
159 TH1D* dndetaTruth = fSumPrimary->ProjectionX("dndetaTruth",1,fSumPrimary->GetNbinsY(),"e");
7646e35f 160
e58000b7 161
162 if(fTriggerMask == AliAODForwardMult::kNSD)
163 dndetaTruth->Scale(1./nNSD, "width");
164 else
165 dndetaTruth->Scale(1./nAll, "width");
166
167 //for(Int_t nn =1; nn<=dndetaTruth->GetNbinsX(); nn++) {
168 // if(dndetaTruth->GetBinContent(nn) > 0) std::cout<<dndetaTruth->GetBinContent(nn)<<" +/- "<<dndetaTruth->GetBinError(nn)<<std::endl;
169 // }
170
171
172 SetHistogramAttributes(dndetaTruth, kBlue+3, 22, "Monte-Carlo truth");
173
b2e7f2d6 174 fOutput->Add(dndetaTruth);
175 fOutput->Add(Rebin(dndetaTruth));
176 }
b2e7f2d6 177 // If only there was a away to get sqrt{s_NN} and beam type
178
179
180 PostData(2, fOutput);
181}
182
183//________________________________________________________________________
fe52e455 184//
185// EOF
186//