]>
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) | |
fb3430ac | 21 | { |
22 | // | |
23 | // Constructor | |
24 | // | |
25 | } | |
b2e7f2d6 | 26 | |
27 | //____________________________________________________________________ | |
28 | AliForwarddNdetaTask::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 | //____________________________________________________________________ | |
42 | AliForwarddNdetaTask::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 | //____________________________________________________________________ |
54 | TH2D* | |
fb3430ac | 55 | AliForwarddNdetaTask::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 | //________________________________________________________________________ |
126 | void | |
127 | AliForwarddNdetaTask::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 | // |