#include "AliFMDMCCorrector.h"
#include <AliESDFMD.h>
#include <TAxis.h>
#include <TList.h>
#include <TMath.h>
#include "AliForwardCorrectionManager.h"
#include "AliFMDCorrSecondaryMap.h"
#include "AliFMDCorrVertexBias.h"
#include "AliLog.h"
#include <TH2D.h>
#include <TROOT.h>
#include <TProfile2D.h>
#include <iostream>
ClassImp(AliFMDMCCorrector)
#if 0
;
#endif
AliFMDMCCorrector::~AliFMDMCCorrector()
{
}
AliFMDMCCorrector&
AliFMDMCCorrector::operator=(const AliFMDMCCorrector& o)
{
if (&o == this) return *this;
AliFMDCorrector::operator=(o);
fSecondaryForMC = o.fSecondaryForMC;
return *this;
}
Bool_t
AliFMDMCCorrector::CorrectMC(AliForwardUtil::Histos& hists,
UShort_t vtxbin)
{
if ((!fUseSecondaryMap || !fSecondaryForMC) && fUseVertexBias)
return kTRUE;
AliForwardCorrectionManager& fcm = AliForwardCorrectionManager::Instance();
UShort_t uvb = vtxbin;
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');
TH2D* h = hists.Get(d,r);
if (fUseSecondaryMap && fSecondaryForMC) {
TH2D* bg = fcm.GetSecondaryMap()->GetCorrection(d,r,uvb);
if (!bg) {
AliWarning(Form("No secondary correction for FMDM%d%c in vertex bin %d",
d, r, uvb));
continue;
}
h->Divide(bg);
}
if (fUseVertexBias) {
TH2D* ef = fcm.GetVertexBias()->GetCorrection(r, uvb);
if (!ef) {
AliWarning(Form("No event vertex bias correction in vertex bin %d",
uvb));
continue;
}
h->Divide(ef);
}
}
}
return kTRUE;
}
void
AliFMDMCCorrector::SetupForData(const TAxis& eAxis)
{
AliFMDCorrector::SetupForData(eAxis);
fFMD1i = Make(1,'I',eAxis);
fFMD2i = Make(2,'I',eAxis);
fFMD2o = Make(2,'O',eAxis);
fFMD3i = Make(3,'I',eAxis);
fFMD3o = Make(3,'O',eAxis);
fComps->Add(fFMD1i);
fComps->Add(fFMD2i);
fComps->Add(fFMD2o);
fComps->Add(fFMD3i);
fComps->Add(fFMD3o);
}
TProfile2D*
AliFMDMCCorrector::Make(UShort_t d, Char_t r,
const TAxis& axis) const
{
TProfile2D* ret = new TProfile2D(Form("FMD%d%c_esd_vs_mc", d, r),
Form("ESD/MC signal for FMD%d%c", d, r),
axis.GetNbins(),
axis.GetXmin(),
axis.GetXmax(),
(r == 'I' || r == 'i') ? 20 : 40,
0, 2*TMath::Pi());
ret->GetXaxis()->SetTitle("#eta");
ret->GetYaxis()->SetTitle("#varphi [degrees]");
ret->GetZaxis()->SetTitle("#LT primary density ESD/MC#GT");
ret->SetDirectory(0);
return ret;
}
void
AliFMDMCCorrector::Fill(UShort_t d, Char_t r, TH2* esd, TH2* mc)
{
if (!esd || !mc) return;
TProfile2D* p = 0;
switch (d) {
case 1: p = fFMD1i; break;
case 2: p = (r == 'I' || r == 'i' ? fFMD2i : fFMD2o); break;
case 3: p = (r == 'I' || r == 'i' ? fFMD3i : fFMD3o); break;
}
if (!p) return;
for (Int_t iEta = 1; iEta <= esd->GetNbinsX(); iEta++) {
Double_t eta = esd->GetXaxis()->GetBinCenter(iEta);
for (Int_t iPhi = 1; iPhi <= esd->GetNbinsY(); iPhi++) {
Double_t phi = esd->GetYaxis()->GetBinCenter(iPhi);
Double_t mEsd = esd->GetBinContent(iEta,iPhi);
Double_t mMc = mc->GetBinContent(iEta,iPhi);
p->Fill(eta, phi, (mMc > 0 ? mEsd / mMc : 0));
}
}
}
Bool_t
AliFMDMCCorrector::CompareResults(AliForwardUtil::Histos& esd,
AliForwardUtil::Histos& mc)
{
Fill(1, 'I', esd.Get(1,'I'), mc.Get(1,'I'));
Fill(2, 'I', esd.Get(2,'I'), mc.Get(2,'I'));
Fill(2, 'O', esd.Get(2,'O'), mc.Get(2,'O'));
Fill(3, 'I', esd.Get(3,'I'), mc.Get(3,'I'));
Fill(3, 'O', esd.Get(3,'O'), mc.Get(3,'O'));
return kTRUE;
}
void
AliFMDMCCorrector::CreateOutputObjects(TList* dir)
{
AliFMDCorrector::CreateOutputObjects(dir);
TList* d = static_cast<TList*>(dir->FindObject(GetName()));
fComps = new TList;
fComps->SetName("esd_mc_comparison");
d->Add(fComps);
}
#define PFB(N,FLAG) \
do { \
AliForwardUtil::PrintName(N); \
std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
} while(false)
void
AliFMDMCCorrector::Print(Option_t* option) const
{
AliFMDCorrector::Print(option);
gROOT->IncreaseDirLevel();
PFB("Use sec. map on MC", fSecondaryForMC);
gROOT->DecreaseDirLevel();
}
AliFMDMCCorrector.cxx:100 AliFMDMCCorrector.cxx:101 AliFMDMCCorrector.cxx:102 AliFMDMCCorrector.cxx:103 AliFMDMCCorrector.cxx:104 AliFMDMCCorrector.cxx:105 AliFMDMCCorrector.cxx:106 AliFMDMCCorrector.cxx:107 AliFMDMCCorrector.cxx:108 AliFMDMCCorrector.cxx:109 AliFMDMCCorrector.cxx:110 AliFMDMCCorrector.cxx:111 AliFMDMCCorrector.cxx:112 AliFMDMCCorrector.cxx:113 AliFMDMCCorrector.cxx:114 AliFMDMCCorrector.cxx:115 AliFMDMCCorrector.cxx:116 AliFMDMCCorrector.cxx:117 AliFMDMCCorrector.cxx:118 AliFMDMCCorrector.cxx:119 AliFMDMCCorrector.cxx:120 AliFMDMCCorrector.cxx:121 AliFMDMCCorrector.cxx:122 AliFMDMCCorrector.cxx:123 AliFMDMCCorrector.cxx:124 AliFMDMCCorrector.cxx:125 AliFMDMCCorrector.cxx:126 AliFMDMCCorrector.cxx:127 AliFMDMCCorrector.cxx:128 AliFMDMCCorrector.cxx:129 AliFMDMCCorrector.cxx:130 AliFMDMCCorrector.cxx:131 AliFMDMCCorrector.cxx:132 AliFMDMCCorrector.cxx:133 AliFMDMCCorrector.cxx:134 AliFMDMCCorrector.cxx:135 AliFMDMCCorrector.cxx:136 AliFMDMCCorrector.cxx:137 AliFMDMCCorrector.cxx:138 AliFMDMCCorrector.cxx:139 AliFMDMCCorrector.cxx:140 AliFMDMCCorrector.cxx:141 AliFMDMCCorrector.cxx:142 AliFMDMCCorrector.cxx:143 AliFMDMCCorrector.cxx:144 AliFMDMCCorrector.cxx:145 AliFMDMCCorrector.cxx:146 AliFMDMCCorrector.cxx:147 AliFMDMCCorrector.cxx:148 AliFMDMCCorrector.cxx:149 AliFMDMCCorrector.cxx:150 AliFMDMCCorrector.cxx:151 AliFMDMCCorrector.cxx:152 AliFMDMCCorrector.cxx:153 AliFMDMCCorrector.cxx:154 AliFMDMCCorrector.cxx:155 AliFMDMCCorrector.cxx:156 AliFMDMCCorrector.cxx:157 AliFMDMCCorrector.cxx:158 AliFMDMCCorrector.cxx:159 AliFMDMCCorrector.cxx:160 AliFMDMCCorrector.cxx:161 AliFMDMCCorrector.cxx:162 AliFMDMCCorrector.cxx:163 AliFMDMCCorrector.cxx:164 AliFMDMCCorrector.cxx:165 AliFMDMCCorrector.cxx:166 AliFMDMCCorrector.cxx:167 AliFMDMCCorrector.cxx:168 AliFMDMCCorrector.cxx:169 AliFMDMCCorrector.cxx:170 AliFMDMCCorrector.cxx:171 AliFMDMCCorrector.cxx:172 AliFMDMCCorrector.cxx:173 AliFMDMCCorrector.cxx:174 AliFMDMCCorrector.cxx:175 AliFMDMCCorrector.cxx:176 AliFMDMCCorrector.cxx:177 AliFMDMCCorrector.cxx:178 AliFMDMCCorrector.cxx:179 AliFMDMCCorrector.cxx:180 AliFMDMCCorrector.cxx:181 AliFMDMCCorrector.cxx:182 AliFMDMCCorrector.cxx:183 AliFMDMCCorrector.cxx:184 AliFMDMCCorrector.cxx:185 AliFMDMCCorrector.cxx:186 AliFMDMCCorrector.cxx:187 AliFMDMCCorrector.cxx:188 AliFMDMCCorrector.cxx:189 AliFMDMCCorrector.cxx:190 AliFMDMCCorrector.cxx:191 AliFMDMCCorrector.cxx:192 AliFMDMCCorrector.cxx:193 AliFMDMCCorrector.cxx:194 AliFMDMCCorrector.cxx:195 AliFMDMCCorrector.cxx:196 AliFMDMCCorrector.cxx:197 AliFMDMCCorrector.cxx:198 AliFMDMCCorrector.cxx:199 AliFMDMCCorrector.cxx:200 AliFMDMCCorrector.cxx:201 AliFMDMCCorrector.cxx:202 AliFMDMCCorrector.cxx:203 AliFMDMCCorrector.cxx:204 AliFMDMCCorrector.cxx:205 AliFMDMCCorrector.cxx:206 AliFMDMCCorrector.cxx:207 AliFMDMCCorrector.cxx:208 AliFMDMCCorrector.cxx:209 AliFMDMCCorrector.cxx:210 AliFMDMCCorrector.cxx:211 AliFMDMCCorrector.cxx:212 AliFMDMCCorrector.cxx:213 AliFMDMCCorrector.cxx:214 AliFMDMCCorrector.cxx:215 AliFMDMCCorrector.cxx:216 AliFMDMCCorrector.cxx:217 AliFMDMCCorrector.cxx:218 AliFMDMCCorrector.cxx:219 AliFMDMCCorrector.cxx:220 AliFMDMCCorrector.cxx:221 AliFMDMCCorrector.cxx:222 AliFMDMCCorrector.cxx:223 AliFMDMCCorrector.cxx:224 AliFMDMCCorrector.cxx:225 AliFMDMCCorrector.cxx:226 AliFMDMCCorrector.cxx:227 AliFMDMCCorrector.cxx:228 AliFMDMCCorrector.cxx:229 AliFMDMCCorrector.cxx:230 AliFMDMCCorrector.cxx:231 AliFMDMCCorrector.cxx:232 AliFMDMCCorrector.cxx:233 AliFMDMCCorrector.cxx:234 AliFMDMCCorrector.cxx:235 AliFMDMCCorrector.cxx:236 AliFMDMCCorrector.cxx:237 AliFMDMCCorrector.cxx:238 AliFMDMCCorrector.cxx:239 AliFMDMCCorrector.cxx:240 AliFMDMCCorrector.cxx:241 AliFMDMCCorrector.cxx:242 AliFMDMCCorrector.cxx:243 AliFMDMCCorrector.cxx:244 AliFMDMCCorrector.cxx:245 AliFMDMCCorrector.cxx:246 AliFMDMCCorrector.cxx:247 AliFMDMCCorrector.cxx:248 AliFMDMCCorrector.cxx:249 AliFMDMCCorrector.cxx:250 AliFMDMCCorrector.cxx:251 AliFMDMCCorrector.cxx:252 AliFMDMCCorrector.cxx:253 AliFMDMCCorrector.cxx:254 AliFMDMCCorrector.cxx:255 AliFMDMCCorrector.cxx:256 AliFMDMCCorrector.cxx:257 AliFMDMCCorrector.cxx:258 AliFMDMCCorrector.cxx:259 AliFMDMCCorrector.cxx:260 AliFMDMCCorrector.cxx:261 AliFMDMCCorrector.cxx:262 AliFMDMCCorrector.cxx:263 AliFMDMCCorrector.cxx:264 AliFMDMCCorrector.cxx:265 AliFMDMCCorrector.cxx:266 AliFMDMCCorrector.cxx:267 AliFMDMCCorrector.cxx:268 AliFMDMCCorrector.cxx:269 AliFMDMCCorrector.cxx:270 AliFMDMCCorrector.cxx:271 AliFMDMCCorrector.cxx:272 AliFMDMCCorrector.cxx:273 AliFMDMCCorrector.cxx:274 AliFMDMCCorrector.cxx:275 AliFMDMCCorrector.cxx:276 AliFMDMCCorrector.cxx:277 AliFMDMCCorrector.cxx:278 AliFMDMCCorrector.cxx:279 AliFMDMCCorrector.cxx:280 AliFMDMCCorrector.cxx:281 AliFMDMCCorrector.cxx:282