#include "AliMCTruthdNdetaTask.h"
#include <TMath.h>
#include <TH2D.h>
#include <TH1D.h>
#include <THStack.h>
#include <TList.h>
#include <TFile.h>
#include <AliAnalysisManager.h>
#include <AliAODEvent.h>
#include <AliAODHandler.h>
#include <AliAODInputHandler.h>
#include "AliForwardUtil.h"
#include "AliAODForwardMult.h"
AliMCTruthdNdetaTask::AliMCTruthdNdetaTask()
: AliBasedNdetaTask(),
fHasData(true)
{
}
AliMCTruthdNdetaTask::AliMCTruthdNdetaTask(const char* )
: AliBasedNdetaTask("MCTruth"),
fHasData(true)
{
}
AliBasedNdetaTask::CentralityBin*
AliMCTruthdNdetaTask::MakeCentralityBin(const char* name, Short_t l, Short_t h)
const
{
return new AliMCTruthdNdetaTask::CentralityBin(name, l, h);
}
TH2D*
AliMCTruthdNdetaTask::GetHistogram(const AliAODEvent& aod, Bool_t mc)
{
if (!fHasData) return 0;
if (mc) return 0;
TH2D* ret = GetPrimary(aod);
if (!ret) {
fHasData = false;
return 0;
}
Int_t nY = ret->GetNbinsY();
for (Int_t i = 1; i <= ret->GetNbinsX(); i++) {
ret->SetBinContent(i, 0, 1);
ret->SetBinContent(i, nY+1, 1);
}
return ret;
}
Bool_t
AliMCTruthdNdetaTask::Finalize()
{
if (!fHasData) {
AliInfo("The MC truth dN/deta task didn't get any data");
return false;
}
AliBasedNdetaTask::Finalize();
THStack* truth = new THStack("dndetaTruth", "dN/d#eta MC Truth");
CentralityBin* bin = 0;
TIter next(fListOfCentralities);
while ((bin = static_cast<CentralityBin*>(next()))) {
if (HasCentrality() && bin->IsAllBin()) continue;
TList* results = bin->GetResults();
if (!results) continue;
TH1* dndeta = static_cast<TH1*>(results->FindObject("dndetaTruth"));
if (dndeta) truth->Add(dndeta);
}
if (!truth->GetHists() ||
truth->GetHists()->GetEntries() <= 0) {
AliWarning("No MC truth histograms found");
delete truth;
truth = 0;
}
if (truth) fResults->Add(truth);
return true;
}
Bool_t
AliMCTruthdNdetaTask::CentralityBin::ProcessEvent(const AliAODForwardMult*
forward,
Int_t triggerMask,
Bool_t isZero,
Double_t vzMin,
Double_t vzMax,
const TH2D* primary,
const TH2D*,
Bool_t checkPileup)
{
if (!primary) return false;
if (!IsAllBin()) {
Double_t centrality = forward->GetCentrality();
if (centrality < fLow || centrality >= fHigh) return false;
}
if (!fSum) CreateSums(primary, 0);
if (!fSumTruth) {
fSumTruth = static_cast<TH2D*>(primary->Clone("truth"));
fSumTruth->SetDirectory(0);
fSumTruth->Reset();
fSums->Add(fSumTruth);
}
Int_t mask = AliAODForwardMult::kB;
if (triggerMask == AliAODForwardMult::kNSD) {
mask ^= AliAODForwardMult::kNSD;
mask = AliAODForwardMult::kMCNSD;
}
if (forward->CheckEvent(mask, -10000, -10000, 0, 0, 0, 0, checkPileup)) {
fSumTruth->Add(primary);
Int_t cnt = Int_t(fSumTruth->GetBinContent(0,0));
fSumTruth->SetBinContent(0,0, ++cnt);
}
if (CheckEvent(forward, triggerMask, vzMin, vzMax, checkPileup))
fSum->Add(primary, isZero);
return true;
}
void
AliMCTruthdNdetaTask::CentralityBin::End(TList* sums,
TList* results,
UShort_t scheme,
Double_t trigEff,
Double_t trigEff0,
Bool_t rootProj,
Bool_t corrEmpty,
Int_t triggerMask,
Int_t marker,
Int_t color,
TList* mclist,
TList* truthlist)
{
#if 0
AliInfo(Form("At end with sums=%p, results=%p, scheme=%d, "
"shapeCorr=%p, trigEff=%f, symmetrice=%d, rebin=%d, "
"rootProj=%d, corrEmpty=%d, cutEdges=%d, triggerMask=0x%08x, "
"marker=%d (%d)",
sums, results, scheme, shapeCorr, trigEff, trigEff0, symmetrice,
rebin, rootProj, corrEmpty, cutEdges, triggerMask, marker,
GetMarkerStyle(kStar)));
#endif
AliBasedNdetaTask::CentralityBin::End(sums, results, scheme, trigEff,
trigEff0, rootProj, corrEmpty,
triggerMask, marker, color, mclist,
truthlist);
fSumTruth = static_cast<TH2D*>(fSums->FindObject("truth"));
if (fSumTruth) {
Int_t n0 = Int_t(fSumTruth->GetBinContent(0,0));
Int_t n = (triggerMask == AliAODForwardMult::kNSD ?
Int_t(fTriggers->GetBinContent(AliAODForwardMult::kBinMCNSD)) :
Int_t(fTriggers->GetBinContent(AliAODForwardMult::kBinAll)));
DMSG(fDebug,0,"Normalising MC truth to %d (%d additions)", n, n0);
TH1D* dndetaTruth = fSumTruth->ProjectionX("dndetaTruth",1,
fSumTruth->GetNbinsY(),"e");
dndetaTruth->SetDirectory(0);
dndetaTruth->Scale(1./n, "width");
SetHistogramAttributes(dndetaTruth, GetColor(color)+1,
GetMarkerStyle(kCross),
"Monte-Carlo truth");
fOutput->Add(dndetaTruth);
}
TH1* dndeta = GetResult("");
if (dndeta)
dndeta->SetTitle("Monte-Carlo truth (selected)");
}
AliMCTruthdNdetaTask.cxx:1 AliMCTruthdNdetaTask.cxx:2 AliMCTruthdNdetaTask.cxx:3 AliMCTruthdNdetaTask.cxx:4 AliMCTruthdNdetaTask.cxx:5 AliMCTruthdNdetaTask.cxx:6 AliMCTruthdNdetaTask.cxx:7 AliMCTruthdNdetaTask.cxx:8 AliMCTruthdNdetaTask.cxx:9 AliMCTruthdNdetaTask.cxx:10 AliMCTruthdNdetaTask.cxx:11 AliMCTruthdNdetaTask.cxx:12 AliMCTruthdNdetaTask.cxx:13 AliMCTruthdNdetaTask.cxx:14 AliMCTruthdNdetaTask.cxx:15 AliMCTruthdNdetaTask.cxx:16 AliMCTruthdNdetaTask.cxx:17 AliMCTruthdNdetaTask.cxx:18 AliMCTruthdNdetaTask.cxx:19 AliMCTruthdNdetaTask.cxx:20 AliMCTruthdNdetaTask.cxx:21 AliMCTruthdNdetaTask.cxx:22 AliMCTruthdNdetaTask.cxx:23 AliMCTruthdNdetaTask.cxx:24 AliMCTruthdNdetaTask.cxx:25 AliMCTruthdNdetaTask.cxx:26 AliMCTruthdNdetaTask.cxx:27 AliMCTruthdNdetaTask.cxx:28 AliMCTruthdNdetaTask.cxx:29 AliMCTruthdNdetaTask.cxx:30 AliMCTruthdNdetaTask.cxx:31 AliMCTruthdNdetaTask.cxx:32 AliMCTruthdNdetaTask.cxx:33 AliMCTruthdNdetaTask.cxx:34 AliMCTruthdNdetaTask.cxx:35 AliMCTruthdNdetaTask.cxx:36 AliMCTruthdNdetaTask.cxx:37 AliMCTruthdNdetaTask.cxx:38 AliMCTruthdNdetaTask.cxx:39 AliMCTruthdNdetaTask.cxx:40 AliMCTruthdNdetaTask.cxx:41 AliMCTruthdNdetaTask.cxx:42 AliMCTruthdNdetaTask.cxx:43 AliMCTruthdNdetaTask.cxx:44 AliMCTruthdNdetaTask.cxx:45 AliMCTruthdNdetaTask.cxx:46 AliMCTruthdNdetaTask.cxx:47 AliMCTruthdNdetaTask.cxx:48 AliMCTruthdNdetaTask.cxx:49 AliMCTruthdNdetaTask.cxx:50 AliMCTruthdNdetaTask.cxx:51 AliMCTruthdNdetaTask.cxx:52 AliMCTruthdNdetaTask.cxx:53 AliMCTruthdNdetaTask.cxx:54 AliMCTruthdNdetaTask.cxx:55 AliMCTruthdNdetaTask.cxx:56 AliMCTruthdNdetaTask.cxx:57 AliMCTruthdNdetaTask.cxx:58 AliMCTruthdNdetaTask.cxx:59 AliMCTruthdNdetaTask.cxx:60 AliMCTruthdNdetaTask.cxx:61 AliMCTruthdNdetaTask.cxx:62 AliMCTruthdNdetaTask.cxx:63 AliMCTruthdNdetaTask.cxx:64 AliMCTruthdNdetaTask.cxx:65 AliMCTruthdNdetaTask.cxx:66 AliMCTruthdNdetaTask.cxx:67 AliMCTruthdNdetaTask.cxx:68 AliMCTruthdNdetaTask.cxx:69 AliMCTruthdNdetaTask.cxx:70 AliMCTruthdNdetaTask.cxx:71 AliMCTruthdNdetaTask.cxx:72 AliMCTruthdNdetaTask.cxx:73 AliMCTruthdNdetaTask.cxx:74 AliMCTruthdNdetaTask.cxx:75 AliMCTruthdNdetaTask.cxx:76 AliMCTruthdNdetaTask.cxx:77 AliMCTruthdNdetaTask.cxx:78 AliMCTruthdNdetaTask.cxx:79 AliMCTruthdNdetaTask.cxx:80 AliMCTruthdNdetaTask.cxx:81 AliMCTruthdNdetaTask.cxx:82 AliMCTruthdNdetaTask.cxx:83 AliMCTruthdNdetaTask.cxx:84 AliMCTruthdNdetaTask.cxx:85 AliMCTruthdNdetaTask.cxx:86 AliMCTruthdNdetaTask.cxx:87 AliMCTruthdNdetaTask.cxx:88 AliMCTruthdNdetaTask.cxx:89 AliMCTruthdNdetaTask.cxx:90 AliMCTruthdNdetaTask.cxx:91 AliMCTruthdNdetaTask.cxx:92 AliMCTruthdNdetaTask.cxx:93 AliMCTruthdNdetaTask.cxx:94 AliMCTruthdNdetaTask.cxx:95 AliMCTruthdNdetaTask.cxx:96 AliMCTruthdNdetaTask.cxx:97 AliMCTruthdNdetaTask.cxx:98 AliMCTruthdNdetaTask.cxx:99 AliMCTruthdNdetaTask.cxx:100 AliMCTruthdNdetaTask.cxx:101 AliMCTruthdNdetaTask.cxx:102 AliMCTruthdNdetaTask.cxx:103 AliMCTruthdNdetaTask.cxx:104 AliMCTruthdNdetaTask.cxx:105 AliMCTruthdNdetaTask.cxx:106 AliMCTruthdNdetaTask.cxx:107 AliMCTruthdNdetaTask.cxx:108 AliMCTruthdNdetaTask.cxx:109 AliMCTruthdNdetaTask.cxx:110 AliMCTruthdNdetaTask.cxx:111 AliMCTruthdNdetaTask.cxx:112 AliMCTruthdNdetaTask.cxx:113 AliMCTruthdNdetaTask.cxx:114 AliMCTruthdNdetaTask.cxx:115 AliMCTruthdNdetaTask.cxx:116 AliMCTruthdNdetaTask.cxx:117 AliMCTruthdNdetaTask.cxx:118 AliMCTruthdNdetaTask.cxx:119 AliMCTruthdNdetaTask.cxx:120 AliMCTruthdNdetaTask.cxx:121 AliMCTruthdNdetaTask.cxx:122 AliMCTruthdNdetaTask.cxx:123 AliMCTruthdNdetaTask.cxx:124 AliMCTruthdNdetaTask.cxx:125 AliMCTruthdNdetaTask.cxx:126 AliMCTruthdNdetaTask.cxx:127 AliMCTruthdNdetaTask.cxx:128 AliMCTruthdNdetaTask.cxx:129 AliMCTruthdNdetaTask.cxx:130 AliMCTruthdNdetaTask.cxx:131 AliMCTruthdNdetaTask.cxx:132 AliMCTruthdNdetaTask.cxx:133 AliMCTruthdNdetaTask.cxx:134 AliMCTruthdNdetaTask.cxx:135 AliMCTruthdNdetaTask.cxx:136 AliMCTruthdNdetaTask.cxx:137 AliMCTruthdNdetaTask.cxx:138 AliMCTruthdNdetaTask.cxx:139 AliMCTruthdNdetaTask.cxx:140 AliMCTruthdNdetaTask.cxx:141 AliMCTruthdNdetaTask.cxx:142 AliMCTruthdNdetaTask.cxx:143 AliMCTruthdNdetaTask.cxx:144 AliMCTruthdNdetaTask.cxx:145 AliMCTruthdNdetaTask.cxx:146 AliMCTruthdNdetaTask.cxx:147 AliMCTruthdNdetaTask.cxx:148 AliMCTruthdNdetaTask.cxx:149 AliMCTruthdNdetaTask.cxx:150 AliMCTruthdNdetaTask.cxx:151 AliMCTruthdNdetaTask.cxx:152 AliMCTruthdNdetaTask.cxx:153 AliMCTruthdNdetaTask.cxx:154 AliMCTruthdNdetaTask.cxx:155 AliMCTruthdNdetaTask.cxx:156 AliMCTruthdNdetaTask.cxx:157 AliMCTruthdNdetaTask.cxx:158 AliMCTruthdNdetaTask.cxx:159 AliMCTruthdNdetaTask.cxx:160 AliMCTruthdNdetaTask.cxx:161 AliMCTruthdNdetaTask.cxx:162 AliMCTruthdNdetaTask.cxx:163 AliMCTruthdNdetaTask.cxx:164 AliMCTruthdNdetaTask.cxx:165 AliMCTruthdNdetaTask.cxx:166 AliMCTruthdNdetaTask.cxx:167 AliMCTruthdNdetaTask.cxx:168 AliMCTruthdNdetaTask.cxx:169 AliMCTruthdNdetaTask.cxx:170 AliMCTruthdNdetaTask.cxx:171 AliMCTruthdNdetaTask.cxx:172 AliMCTruthdNdetaTask.cxx:173 AliMCTruthdNdetaTask.cxx:174 AliMCTruthdNdetaTask.cxx:175 AliMCTruthdNdetaTask.cxx:176 AliMCTruthdNdetaTask.cxx:177 AliMCTruthdNdetaTask.cxx:178 AliMCTruthdNdetaTask.cxx:179 AliMCTruthdNdetaTask.cxx:180 AliMCTruthdNdetaTask.cxx:181 AliMCTruthdNdetaTask.cxx:182 AliMCTruthdNdetaTask.cxx:183 AliMCTruthdNdetaTask.cxx:184 AliMCTruthdNdetaTask.cxx:185 AliMCTruthdNdetaTask.cxx:186 AliMCTruthdNdetaTask.cxx:187 AliMCTruthdNdetaTask.cxx:188 AliMCTruthdNdetaTask.cxx:189 AliMCTruthdNdetaTask.cxx:190 AliMCTruthdNdetaTask.cxx:191 AliMCTruthdNdetaTask.cxx:192 AliMCTruthdNdetaTask.cxx:193 AliMCTruthdNdetaTask.cxx:194 AliMCTruthdNdetaTask.cxx:195 AliMCTruthdNdetaTask.cxx:196 AliMCTruthdNdetaTask.cxx:197 AliMCTruthdNdetaTask.cxx:198 AliMCTruthdNdetaTask.cxx:199 AliMCTruthdNdetaTask.cxx:200 AliMCTruthdNdetaTask.cxx:201 AliMCTruthdNdetaTask.cxx:202 AliMCTruthdNdetaTask.cxx:203 AliMCTruthdNdetaTask.cxx:204 AliMCTruthdNdetaTask.cxx:205 AliMCTruthdNdetaTask.cxx:206 AliMCTruthdNdetaTask.cxx:207 AliMCTruthdNdetaTask.cxx:208 AliMCTruthdNdetaTask.cxx:209 AliMCTruthdNdetaTask.cxx:210 AliMCTruthdNdetaTask.cxx:211 AliMCTruthdNdetaTask.cxx:212 AliMCTruthdNdetaTask.cxx:213 AliMCTruthdNdetaTask.cxx:214 AliMCTruthdNdetaTask.cxx:215 AliMCTruthdNdetaTask.cxx:216 AliMCTruthdNdetaTask.cxx:217 AliMCTruthdNdetaTask.cxx:218 AliMCTruthdNdetaTask.cxx:219 AliMCTruthdNdetaTask.cxx:220 AliMCTruthdNdetaTask.cxx:221 AliMCTruthdNdetaTask.cxx:222 AliMCTruthdNdetaTask.cxx:223 AliMCTruthdNdetaTask.cxx:224 AliMCTruthdNdetaTask.cxx:225 AliMCTruthdNdetaTask.cxx:226 AliMCTruthdNdetaTask.cxx:227 AliMCTruthdNdetaTask.cxx:228 AliMCTruthdNdetaTask.cxx:229 AliMCTruthdNdetaTask.cxx:230 AliMCTruthdNdetaTask.cxx:231 AliMCTruthdNdetaTask.cxx:232 AliMCTruthdNdetaTask.cxx:233 AliMCTruthdNdetaTask.cxx:234 AliMCTruthdNdetaTask.cxx:235 AliMCTruthdNdetaTask.cxx:236 AliMCTruthdNdetaTask.cxx:237 AliMCTruthdNdetaTask.cxx:238 AliMCTruthdNdetaTask.cxx:239