]>
Commit | Line | Data |
---|---|---|
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 | //____________________________________________________________________ | |
16 | AliForwarddNdetaTask::AliForwarddNdetaTask() | |
fe52e455 | 17 | : AliBasedNdetaTask(), |
b2e7f2d6 | 18 | fSumPrimary(0), // Sum of primary histograms |
b2e7f2d6 | 19 | fSNNString(0), |
20 | fSysString(0) | |
21 | {} | |
22 | ||
23 | //____________________________________________________________________ | |
24 | AliForwarddNdetaTask::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 | //____________________________________________________________________ | |
33 | AliForwarddNdetaTask::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 | //____________________________________________________________________ |
41 | TH2D* | |
fe52e455 | 42 | AliForwarddNdetaTask::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 | //________________________________________________________________________ |
85 | void | |
86 | AliForwarddNdetaTask::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 | // |