]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FORWARD/analysis2/AliForwarddNdetaTask.cxx
Refactoring for dN/deta tasks, more diagnostics histograms in event selector
[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)
21{}
22
23//____________________________________________________________________
24AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */)
fe52e455 25 : AliBasedNdetaTask("Forward"),
b2e7f2d6 26 fSumPrimary(0), // Sum of primary histograms
b2e7f2d6 27 fSNNString(0),
28 fSysString(0)
29{
b2e7f2d6 30}
31
32//____________________________________________________________________
33AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o)
fe52e455 34 : AliBasedNdetaTask(o),
ec82df5b 35 fSumPrimary(o.fSumPrimary), // Sum of primary histograms
ec82df5b 36 fSNNString(o.fSNNString), //
37 fSysString(o.fSysString) //
b2e7f2d6 38{}
39
b2e7f2d6 40//____________________________________________________________________
41TH2D*
fe52e455 42AliForwarddNdetaTask::GetHistogram(AliAODEvent* aod, Bool_t mc)
b2e7f2d6 43{
fe52e455 44 TObject* obj = 0;
45 if (mc) obj = aod->FindListObject("ForwardMC");
46 else obj = aod->FindListObject("Forward");
b2e7f2d6 47
48 // We should have a forward object at least
fe52e455 49 if (!obj) {
50 if (!mc) AliWarning("No Forward object found AOD");
51 return 0;
52 }
53 AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj);
54
55 // Here, we update the primary stuff
56 if (mc) {
57 TObject* oPrimary = aod->FindListObject("primary");
58 if (oPrimary) {
59 TH2D* primary = static_cast<TH2D*>(oPrimary);
60 // Add contribtion from MC
61 if (primary && !fSumPrimary) fSumPrimary = CloneHist(primary, "truth");
62 if (primary) fSumPrimary->Add(primary);
63 }
b2e7f2d6 64 }
65
fe52e455 66 // Here, we get the update
67 if (!fSNNString) {
b2e7f2d6 68 UShort_t sNN = forward->GetSNN();
fe52e455 69 fSNNString = new TNamed("sNN", "");
b2e7f2d6 70 fSNNString->SetTitle(AliForwardUtil::CenterOfMassEnergyString(sNN));
71 fSNNString->SetUniqueID(sNN);
fe52e455 72 fSums->Add(fSNNString);
73
74 UShort_t sys = forward->GetSystem();
75 fSysString = new TNamed("sys", "");
b2e7f2d6 76 fSysString->SetTitle(AliForwardUtil::CollisionSystemString(sys));
77 fSysString->SetUniqueID(sys);
fe52e455 78 fSums->Add(fSysString);
b2e7f2d6 79 }
80
fe52e455 81 return &(forward->GetHistogram());
b2e7f2d6 82}
83
b2e7f2d6 84//________________________________________________________________________
85void
86AliForwarddNdetaTask::Terminate(Option_t *)
87{
88 // Draw result to screen, or perform fitting, normalizations Called
89 // once at the end of the query
fe52e455 90 AliBasedNdetaTask::Terminate("");
8e2bb72a 91 if(!fSums) {
b2e7f2d6 92 AliError("Could not retrieve TList fSums");
93 return;
94 }
b2e7f2d6 95 if (!fOutput) {
fe52e455 96 AliError("Could not retrieve TList fOutput");
97 return;
b2e7f2d6 98 }
99
fe52e455 100 fSumPrimary = static_cast<TH2D*>(fSums->FindObject("truth"));
b2e7f2d6 101 fSNNString = static_cast<TNamed*>(fSums->FindObject("sNN"));
102 fSysString = static_cast<TNamed*>(fSums->FindObject("sys"));
103
b2e7f2d6 104 fOutput->Add(fSNNString->Clone());
105 fOutput->Add(fSysString->Clone());
b2e7f2d6 106
107 if (fSumPrimary) {
fe52e455 108 Int_t nAll = Int_t(fTriggers->GetBinContent(kAll));
109 TH1D* dndetaTruth = ProjectX(fSumPrimary,"dndetaTruth",
110 1,fSumPrimary->GetNbinsY());
b2e7f2d6 111 dndetaTruth->Scale(1./nAll, "width");
112
113 SetHistogramAttributes(dndetaTruth, kGray+3, 22, "Monte-Carlo truth");
114
115 fOutput->Add(dndetaTruth);
116 fOutput->Add(Rebin(dndetaTruth));
117 }
b2e7f2d6 118 // If only there was a away to get sqrt{s_NN} and beam type
119
120
121 PostData(2, fOutput);
122}
123
124//________________________________________________________________________
fe52e455 125//
126// EOF
127//