#include "AliForwardMCCorrectionsTask.h"
#include "AliForwardCorrectionManager.h"
#include "AliTriggerAnalysis.h"
#include "AliPhysicsSelection.h"
#include "AliLog.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AliESDEvent.h"
#include "AliAODHandler.h"
#include "AliMultiplicity.h"
#include "AliInputEventHandler.h"
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliAODForwardMult.h"
#include "AliFMDStripIndex.h"
#include "AliFMDCorrSecondaryMap.h"
#include <TH1.h>
#include <TH2D.h>
#include <TDirectory.h>
#include <TTree.h>
#include <TList.h>
#include <TROOT.h>
#include <iostream>
AliForwardMCCorrectionsTask::AliForwardMCCorrectionsTask()
: AliBaseMCCorrectionsTask(),
fTrackDensity(),
fESDFMD(),
fSecCorr(0)
{
}
AliForwardMCCorrectionsTask::AliForwardMCCorrectionsTask(const char* name)
: AliBaseMCCorrectionsTask(name, &(AliForwardCorrectionManager::Instance())),
fTrackDensity("trackDensity"),
fESDFMD(),
fSecCorr(0)
{
}
AliBaseMCCorrectionsTask::VtxBin*
AliForwardMCCorrectionsTask::CreateVtxBin(Double_t low, Double_t high)
{
return new AliForwardMCCorrectionsTask::VtxBin(low,high, fEtaAxis);
}
Bool_t
AliForwardMCCorrectionsTask::PreEvent()
{
fESDFMD.Clear();
return true;
}
Bool_t
AliForwardMCCorrectionsTask::ProcessESD(const AliESDEvent& esd,
const AliMCEvent& mc,
AliBaseMCCorrectionsTask::VtxBin& bin,
Double_t vz)
{
AliESDFMD* esdFMD = esd.GetFMDData();
fTrackDensity.Calculate(*esdFMD, mc, vz, fESDFMD, bin.fPrimary);
bin.fCounts->Fill(0.5);
AliForwardMCCorrectionsTask::VtxBin& vb =
static_cast<AliForwardMCCorrectionsTask::VtxBin&>(bin);
for (UShort_t d=1; d<=3; d++) {
UShort_t nr = (d == 1 ? 1 : 2);
for (UShort_t q=0; q<nr; q++) {
Char_t r = (q == 0 ? 'I' : 'O');
UShort_t ns= (q == 0 ? 20 : 40);
UShort_t nt= (q == 0 ? 512 : 256);
TH2D* h = vb.fHists.Get(d,r);
for (UShort_t s=0; s<ns; s++) {
for (UShort_t t=0; t<nt; t++) {
Float_t mult = fESDFMD.Multiplicity(d,r,s,t);
if (mult == 0 || mult > 20) continue;
Float_t phi = fESDFMD.Phi(d,r,s,t) / 180 * TMath::Pi();
Float_t eta = fESDFMD.Eta(d,r,s,t);
h->Fill(eta,phi,mult);
}
}
}
}
return true;
}
void
AliForwardMCCorrectionsTask::CreateCorrections(TList* results)
{
fSecCorr = new AliFMDCorrSecondaryMap;
fSecCorr->SetVertexAxis(fVtxAxis);
fSecCorr->SetEtaAxis(fEtaAxis);
results->Add(fSecCorr);
}
Bool_t
AliForwardMCCorrectionsTask::FinalizeVtxBin(AliBaseMCCorrectionsTask::VtxBin*
bin, UShort_t iVz)
{
AliForwardMCCorrectionsTask::VtxBin* vb =
static_cast<AliForwardMCCorrectionsTask::VtxBin*>(bin);
vb->Terminate(fList, fResults, iVz, fSecCorr);
return true;
}
void
AliForwardMCCorrectionsTask::Print(Option_t* option) const
{
AliBaseMCCorrectionsTask::Print(option);
gROOT->IncreaseDirLevel();
fTrackDensity.Print(option);
gROOT->DecreaseDirLevel();
}
AliForwardMCCorrectionsTask::VtxBin::VtxBin()
: AliBaseMCCorrectionsTask::VtxBin(),
fHists()
{
}
AliForwardMCCorrectionsTask::VtxBin::VtxBin(Double_t low,
Double_t high,
const TAxis& axis)
: AliBaseMCCorrectionsTask::VtxBin(low, high, axis, 40),
fHists()
{
fHists.Init(axis);
}
TList*
AliForwardMCCorrectionsTask::VtxBin::CreateOutputObjects(TList* l)
{
TList* d = AliBaseMCCorrectionsTask::VtxBin::CreateOutputObjects(l);
d->Add(fHists.fFMD1i);
d->Add(fHists.fFMD2i);
d->Add(fHists.fFMD2o);
d->Add(fHists.fFMD3i);
d->Add(fHists.fFMD3o);
return d;
}
TH2D*
AliForwardMCCorrectionsTask::VtxBin::MakeBg(const TH2D* hits,
const TH2D* primary) const
{
TH2D* h = static_cast<TH2D*>(hits->Clone());
h->SetDirectory(0);
TString n(h->GetName());
n.ReplaceAll("_cache", "");
h->SetName(n);
h->Divide(primary);
return h;
}
void
AliForwardMCCorrectionsTask::VtxBin::Terminate(const TList* input,
TList* output,
UShort_t iVz,
AliFMDCorrSecondaryMap* map)
{
TList* out = new TList;
out->SetName(GetName());
out->SetOwner();
output->Add(out);
TList* l = static_cast<TList*>(input->FindObject(GetName()));
if (!l) {
AliError(Form("List %s not found in %s", GetName(), input->GetName()));
return;
}
TH2D* fmd1i = static_cast<TH2D*>(l->FindObject("FMD1I_cache"));
TH2D* fmd2i = static_cast<TH2D*>(l->FindObject("FMD2I_cache"));
TH2D* fmd2o = static_cast<TH2D*>(l->FindObject("FMD2O_cache"));
TH2D* fmd3i = static_cast<TH2D*>(l->FindObject("FMD3I_cache"));
TH2D* fmd3o = static_cast<TH2D*>(l->FindObject("FMD3O_cache"));
TH2D* primO = static_cast<TH2D*>(l->FindObject("primary"));
if (!fmd1i || !fmd2i || !fmd2o || !fmd3i || !fmd3o || !primO) {
AliError(Form("Missing histogram(s): %p,%p,%p,%p,%p,%p",
fmd1i, fmd2i, fmd2o, fmd3i, fmd3o, primO));
return;
}
TH2D* primI = static_cast<TH2D*>(primO->Clone());
primI->SetDirectory(0);
primI->RebinY(2);
TH2D* bg1i = MakeBg(fmd1i, primI);
TH2D* bg2i = MakeBg(fmd2i, primI);
TH2D* bg2o = MakeBg(fmd2o, primO);
TH2D* bg3i = MakeBg(fmd3i, primI);
TH2D* bg3o = MakeBg(fmd3o, primO);
map->SetCorrection(1, 'I', iVz, bg1i);
map->SetCorrection(2, 'I', iVz, bg2i);
map->SetCorrection(2, 'O', iVz, bg2o);
map->SetCorrection(3, 'I', iVz, bg3i);
map->SetCorrection(3, 'O', iVz, bg3o);
out->Add(bg1i);
out->Add(bg2i);
out->Add(bg2o);
out->Add(bg3i);
out->Add(bg3o);
}
AliForwardMCCorrectionsTask.cxx:1 AliForwardMCCorrectionsTask.cxx:2 AliForwardMCCorrectionsTask.cxx:3 AliForwardMCCorrectionsTask.cxx:4 AliForwardMCCorrectionsTask.cxx:5 AliForwardMCCorrectionsTask.cxx:6 AliForwardMCCorrectionsTask.cxx:7 AliForwardMCCorrectionsTask.cxx:8 AliForwardMCCorrectionsTask.cxx:9 AliForwardMCCorrectionsTask.cxx:10 AliForwardMCCorrectionsTask.cxx:11 AliForwardMCCorrectionsTask.cxx:12 AliForwardMCCorrectionsTask.cxx:13 AliForwardMCCorrectionsTask.cxx:14 AliForwardMCCorrectionsTask.cxx:15 AliForwardMCCorrectionsTask.cxx:16 AliForwardMCCorrectionsTask.cxx:17 AliForwardMCCorrectionsTask.cxx:18 AliForwardMCCorrectionsTask.cxx:19 AliForwardMCCorrectionsTask.cxx:20 AliForwardMCCorrectionsTask.cxx:21 AliForwardMCCorrectionsTask.cxx:22 AliForwardMCCorrectionsTask.cxx:23 AliForwardMCCorrectionsTask.cxx:24 AliForwardMCCorrectionsTask.cxx:25 AliForwardMCCorrectionsTask.cxx:26 AliForwardMCCorrectionsTask.cxx:27 AliForwardMCCorrectionsTask.cxx:28 AliForwardMCCorrectionsTask.cxx:29 AliForwardMCCorrectionsTask.cxx:30 AliForwardMCCorrectionsTask.cxx:31 AliForwardMCCorrectionsTask.cxx:32 AliForwardMCCorrectionsTask.cxx:33 AliForwardMCCorrectionsTask.cxx:34 AliForwardMCCorrectionsTask.cxx:35 AliForwardMCCorrectionsTask.cxx:36 AliForwardMCCorrectionsTask.cxx:37 AliForwardMCCorrectionsTask.cxx:38 AliForwardMCCorrectionsTask.cxx:39 AliForwardMCCorrectionsTask.cxx:40 AliForwardMCCorrectionsTask.cxx:41 AliForwardMCCorrectionsTask.cxx:42 AliForwardMCCorrectionsTask.cxx:43 AliForwardMCCorrectionsTask.cxx:44 AliForwardMCCorrectionsTask.cxx:45 AliForwardMCCorrectionsTask.cxx:46 AliForwardMCCorrectionsTask.cxx:47 AliForwardMCCorrectionsTask.cxx:48 AliForwardMCCorrectionsTask.cxx:49 AliForwardMCCorrectionsTask.cxx:50 AliForwardMCCorrectionsTask.cxx:51 AliForwardMCCorrectionsTask.cxx:52 AliForwardMCCorrectionsTask.cxx:53 AliForwardMCCorrectionsTask.cxx:54 AliForwardMCCorrectionsTask.cxx:55 AliForwardMCCorrectionsTask.cxx:56 AliForwardMCCorrectionsTask.cxx:57 AliForwardMCCorrectionsTask.cxx:58 AliForwardMCCorrectionsTask.cxx:59 AliForwardMCCorrectionsTask.cxx:60 AliForwardMCCorrectionsTask.cxx:61 AliForwardMCCorrectionsTask.cxx:62 AliForwardMCCorrectionsTask.cxx:63 AliForwardMCCorrectionsTask.cxx:64 AliForwardMCCorrectionsTask.cxx:65 AliForwardMCCorrectionsTask.cxx:66 AliForwardMCCorrectionsTask.cxx:67 AliForwardMCCorrectionsTask.cxx:68 AliForwardMCCorrectionsTask.cxx:69 AliForwardMCCorrectionsTask.cxx:70 AliForwardMCCorrectionsTask.cxx:71 AliForwardMCCorrectionsTask.cxx:72 AliForwardMCCorrectionsTask.cxx:73 AliForwardMCCorrectionsTask.cxx:74 AliForwardMCCorrectionsTask.cxx:75 AliForwardMCCorrectionsTask.cxx:76 AliForwardMCCorrectionsTask.cxx:77 AliForwardMCCorrectionsTask.cxx:78 AliForwardMCCorrectionsTask.cxx:79 AliForwardMCCorrectionsTask.cxx:80 AliForwardMCCorrectionsTask.cxx:81 AliForwardMCCorrectionsTask.cxx:82 AliForwardMCCorrectionsTask.cxx:83 AliForwardMCCorrectionsTask.cxx:84 AliForwardMCCorrectionsTask.cxx:85 AliForwardMCCorrectionsTask.cxx:86 AliForwardMCCorrectionsTask.cxx:87 AliForwardMCCorrectionsTask.cxx:88 AliForwardMCCorrectionsTask.cxx:89 AliForwardMCCorrectionsTask.cxx:90 AliForwardMCCorrectionsTask.cxx:91 AliForwardMCCorrectionsTask.cxx:92 AliForwardMCCorrectionsTask.cxx:93 AliForwardMCCorrectionsTask.cxx:94 AliForwardMCCorrectionsTask.cxx:95 AliForwardMCCorrectionsTask.cxx:96 AliForwardMCCorrectionsTask.cxx:97 AliForwardMCCorrectionsTask.cxx:98 AliForwardMCCorrectionsTask.cxx:99 AliForwardMCCorrectionsTask.cxx:100 AliForwardMCCorrectionsTask.cxx:101 AliForwardMCCorrectionsTask.cxx:102 AliForwardMCCorrectionsTask.cxx:103 AliForwardMCCorrectionsTask.cxx:104 AliForwardMCCorrectionsTask.cxx:105 AliForwardMCCorrectionsTask.cxx:106 AliForwardMCCorrectionsTask.cxx:107 AliForwardMCCorrectionsTask.cxx:108 AliForwardMCCorrectionsTask.cxx:109 AliForwardMCCorrectionsTask.cxx:110 AliForwardMCCorrectionsTask.cxx:111 AliForwardMCCorrectionsTask.cxx:112 AliForwardMCCorrectionsTask.cxx:113 AliForwardMCCorrectionsTask.cxx:114 AliForwardMCCorrectionsTask.cxx:115 AliForwardMCCorrectionsTask.cxx:116 AliForwardMCCorrectionsTask.cxx:117 AliForwardMCCorrectionsTask.cxx:118 AliForwardMCCorrectionsTask.cxx:119 AliForwardMCCorrectionsTask.cxx:120 AliForwardMCCorrectionsTask.cxx:121 AliForwardMCCorrectionsTask.cxx:122 AliForwardMCCorrectionsTask.cxx:123 AliForwardMCCorrectionsTask.cxx:124 AliForwardMCCorrectionsTask.cxx:125 AliForwardMCCorrectionsTask.cxx:126 AliForwardMCCorrectionsTask.cxx:127 AliForwardMCCorrectionsTask.cxx:128 AliForwardMCCorrectionsTask.cxx:129 AliForwardMCCorrectionsTask.cxx:130 AliForwardMCCorrectionsTask.cxx:131 AliForwardMCCorrectionsTask.cxx:132 AliForwardMCCorrectionsTask.cxx:133 AliForwardMCCorrectionsTask.cxx:134 AliForwardMCCorrectionsTask.cxx:135 AliForwardMCCorrectionsTask.cxx:136 AliForwardMCCorrectionsTask.cxx:137 AliForwardMCCorrectionsTask.cxx:138 AliForwardMCCorrectionsTask.cxx:139 AliForwardMCCorrectionsTask.cxx:140 AliForwardMCCorrectionsTask.cxx:141 AliForwardMCCorrectionsTask.cxx:142 AliForwardMCCorrectionsTask.cxx:143 AliForwardMCCorrectionsTask.cxx:144 AliForwardMCCorrectionsTask.cxx:145 AliForwardMCCorrectionsTask.cxx:146 AliForwardMCCorrectionsTask.cxx:147 AliForwardMCCorrectionsTask.cxx:148 AliForwardMCCorrectionsTask.cxx:149 AliForwardMCCorrectionsTask.cxx:150 AliForwardMCCorrectionsTask.cxx:151 AliForwardMCCorrectionsTask.cxx:152 AliForwardMCCorrectionsTask.cxx:153 AliForwardMCCorrectionsTask.cxx:154 AliForwardMCCorrectionsTask.cxx:155 AliForwardMCCorrectionsTask.cxx:156 AliForwardMCCorrectionsTask.cxx:157 AliForwardMCCorrectionsTask.cxx:158 AliForwardMCCorrectionsTask.cxx:159 AliForwardMCCorrectionsTask.cxx:160 AliForwardMCCorrectionsTask.cxx:161 AliForwardMCCorrectionsTask.cxx:162 AliForwardMCCorrectionsTask.cxx:163 AliForwardMCCorrectionsTask.cxx:164 AliForwardMCCorrectionsTask.cxx:165 AliForwardMCCorrectionsTask.cxx:166 AliForwardMCCorrectionsTask.cxx:167 AliForwardMCCorrectionsTask.cxx:168 AliForwardMCCorrectionsTask.cxx:169 AliForwardMCCorrectionsTask.cxx:170 AliForwardMCCorrectionsTask.cxx:171 AliForwardMCCorrectionsTask.cxx:172 AliForwardMCCorrectionsTask.cxx:173 AliForwardMCCorrectionsTask.cxx:174 AliForwardMCCorrectionsTask.cxx:175 AliForwardMCCorrectionsTask.cxx:176 AliForwardMCCorrectionsTask.cxx:177 AliForwardMCCorrectionsTask.cxx:178 AliForwardMCCorrectionsTask.cxx:179 AliForwardMCCorrectionsTask.cxx:180 AliForwardMCCorrectionsTask.cxx:181 AliForwardMCCorrectionsTask.cxx:182 AliForwardMCCorrectionsTask.cxx:183 AliForwardMCCorrectionsTask.cxx:184 AliForwardMCCorrectionsTask.cxx:185 AliForwardMCCorrectionsTask.cxx:186 AliForwardMCCorrectionsTask.cxx:187 AliForwardMCCorrectionsTask.cxx:188 AliForwardMCCorrectionsTask.cxx:189 AliForwardMCCorrectionsTask.cxx:190 AliForwardMCCorrectionsTask.cxx:191 AliForwardMCCorrectionsTask.cxx:192 AliForwardMCCorrectionsTask.cxx:193 AliForwardMCCorrectionsTask.cxx:194 AliForwardMCCorrectionsTask.cxx:195 AliForwardMCCorrectionsTask.cxx:196 AliForwardMCCorrectionsTask.cxx:197 AliForwardMCCorrectionsTask.cxx:198 AliForwardMCCorrectionsTask.cxx:199 AliForwardMCCorrectionsTask.cxx:200 AliForwardMCCorrectionsTask.cxx:201 AliForwardMCCorrectionsTask.cxx:202 AliForwardMCCorrectionsTask.cxx:203 AliForwardMCCorrectionsTask.cxx:204 AliForwardMCCorrectionsTask.cxx:205 AliForwardMCCorrectionsTask.cxx:206 AliForwardMCCorrectionsTask.cxx:207 AliForwardMCCorrectionsTask.cxx:208 AliForwardMCCorrectionsTask.cxx:209 AliForwardMCCorrectionsTask.cxx:210 AliForwardMCCorrectionsTask.cxx:211 AliForwardMCCorrectionsTask.cxx:212 AliForwardMCCorrectionsTask.cxx:213 AliForwardMCCorrectionsTask.cxx:214 AliForwardMCCorrectionsTask.cxx:215 AliForwardMCCorrectionsTask.cxx:216 AliForwardMCCorrectionsTask.cxx:217 AliForwardMCCorrectionsTask.cxx:218 AliForwardMCCorrectionsTask.cxx:219 AliForwardMCCorrectionsTask.cxx:220 AliForwardMCCorrectionsTask.cxx:221 AliForwardMCCorrectionsTask.cxx:222 AliForwardMCCorrectionsTask.cxx:223 AliForwardMCCorrectionsTask.cxx:224 AliForwardMCCorrectionsTask.cxx:225 AliForwardMCCorrectionsTask.cxx:226 AliForwardMCCorrectionsTask.cxx:227 AliForwardMCCorrectionsTask.cxx:228 AliForwardMCCorrectionsTask.cxx:229 AliForwardMCCorrectionsTask.cxx:230 AliForwardMCCorrectionsTask.cxx:231 AliForwardMCCorrectionsTask.cxx:232 AliForwardMCCorrectionsTask.cxx:233 AliForwardMCCorrectionsTask.cxx:234 AliForwardMCCorrectionsTask.cxx:235 AliForwardMCCorrectionsTask.cxx:236 AliForwardMCCorrectionsTask.cxx:237 AliForwardMCCorrectionsTask.cxx:238 AliForwardMCCorrectionsTask.cxx:239 AliForwardMCCorrectionsTask.cxx:240 AliForwardMCCorrectionsTask.cxx:241 AliForwardMCCorrectionsTask.cxx:242 AliForwardMCCorrectionsTask.cxx:243 AliForwardMCCorrectionsTask.cxx:244 AliForwardMCCorrectionsTask.cxx:245 AliForwardMCCorrectionsTask.cxx:246 AliForwardMCCorrectionsTask.cxx:247 AliForwardMCCorrectionsTask.cxx:248 AliForwardMCCorrectionsTask.cxx:249 AliForwardMCCorrectionsTask.cxx:250 AliForwardMCCorrectionsTask.cxx:251 AliForwardMCCorrectionsTask.cxx:252 AliForwardMCCorrectionsTask.cxx:253 AliForwardMCCorrectionsTask.cxx:254 AliForwardMCCorrectionsTask.cxx:255 AliForwardMCCorrectionsTask.cxx:256 AliForwardMCCorrectionsTask.cxx:257 AliForwardMCCorrectionsTask.cxx:258