#include "TMath.h"
#include "TAxis.h"
#include "TSystem.h"
#include "TProfile.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TFile.h"
#include "TPRegexp.h"
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliMCParticle.h"
#include "AliESDtrackCuts.h"
#include "AliESDInputHandler.h"
#include "AliESDpid.h"
#include "AliCentrality.h"
#include "AliTracker.h"
#include "AliAODInputHandler.h"
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliEbyEPidRatioQA.h"
using namespace std;
ClassImp(AliEbyEPidRatioQA)
AliEbyEPidRatioQA::AliEbyEPidRatioQA() :
AliEbyEPidRatioBase("QA", "QA"),
fHnQAa(NULL), fHnQAb(NULL) {
AliLog::SetClassDebugLevel("AliEbyEPidRatioQA",10);
}
AliEbyEPidRatioQA::~AliEbyEPidRatioQA() {
return;
}
void AliEbyEPidRatioQA::CreateHistograms() {
Int_t binHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4,
AliEbyEPidRatioHelper::fgkfHistNBinsSign,
AliEbyEPidRatioHelper::fgkfHistNBinsPt,
AliEbyEPidRatioHelper::fgkfHistNBinsPt,
500, 50, 50, 50, 3};
Double_t minHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0],-0.5,
AliEbyEPidRatioHelper::fgkfHistRangeSign[0],
AliEbyEPidRatioHelper::fgkfHistRangePt[0],
AliEbyEPidRatioHelper::fgkfHistRangePt[0],
30, -10,-10, -10, -0.5};
Double_t maxHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5,
AliEbyEPidRatioHelper::fgkfHistRangeSign[1],
AliEbyEPidRatioHelper::fgkfHistRangePt[1],
AliEbyEPidRatioHelper::fgkfHistRangePt[1],
500, 10., 10., 10., 2.5};
Int_t binHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4,
AliEbyEPidRatioHelper::fgkfHistNBinsSign,
AliEbyEPidRatioHelper::fgkfHistNBinsPt,
AliEbyEPidRatioHelper::fgkfHistNBinsEta,
AliEbyEPidRatioHelper::fgkfHistNBinsRap,
AliEbyEPidRatioHelper::fgkfHistNBinsPhi,
50, 50};
Double_t minHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0],-0.5,
AliEbyEPidRatioHelper::fgkfHistRangeSign[0],
AliEbyEPidRatioHelper::fgkfHistRangePt[0],
AliEbyEPidRatioHelper::fgkfHistRangeEta[0],
AliEbyEPidRatioHelper::fgkfHistRangeRap[0],
AliEbyEPidRatioHelper::fgkfHistRangePhi[0],
-5,-5};
Double_t maxHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5,
AliEbyEPidRatioHelper::fgkfHistRangeSign[1],
AliEbyEPidRatioHelper::fgkfHistRangePt[1],
AliEbyEPidRatioHelper::fgkfHistRangeEta[1],
AliEbyEPidRatioHelper::fgkfHistRangeRap[1],
AliEbyEPidRatioHelper::fgkfHistRangePhi[1],
5., 5.};
fHnQAa = new THnSparseF("hnQAPid", "cent:pid:sign:pt:pInner:TPCsignal:nSigmaITS:nSigmaTPC:nSigmaTOF:MCisProbe", 10, binHnQAa, minHnQAa, maxHnQAa);
fHnQAb = new THnSparseF("hnQADca", "cent:pid:sign:pt:eta:y:phi:DCAr:DCAz", 9, binHnQAb, minHnQAb, maxHnQAb);
fHnQAa->Sumw2();
fHnQAb->Sumw2();
fHnQAa->GetAxis(0)->SetTitle("centrality");
fHnQAa->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");
fHnQAa->GetAxis(2)->SetTitle("sign");
fHnQAa->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})");
fHnQAa->GetAxis(4)->SetTitle("#it{p}_{Inner} (GeV/#it{c})");
fHnQAa->GetAxis(5)->SetTitle("TPC signal");
fHnQAa->GetAxis(6)->SetTitle("n #sigma ITS");
fHnQAa->GetAxis(7)->SetTitle("n #sigma TPC");
fHnQAa->GetAxis(8)->SetTitle("n #sigma TOF");
fHnQAa->GetAxis(9)->SetTitle("MCisProbe");
fHnQAb->GetAxis(0)->SetTitle("centrality");
fHnQAb->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");
fHnQAb->GetAxis(2)->SetTitle("sign");
fHnQAb->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})");
fHnQAb->GetAxis(4)->SetTitle("#eta");
fHnQAb->GetAxis(5)->SetTitle("#it{y}");
fHnQAb->GetAxis(6)->SetTitle("#varphi");
fHnQAb->GetAxis(7)->SetTitle("DCAr");
fHnQAb->GetAxis(8)->SetTitle("DCAz");
fHelper->BinLogAxis(fHnQAa, 3);
fHelper->BinLogAxis(fHnQAb, 3);
return;
}
void AliEbyEPidRatioQA::Process() {
Float_t etaRange[2];
fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);
Float_t ptRange[2];
fESDTrackCuts->GetPtRange(ptRange[0],ptRange[1]);
for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
AliVTrack *track = (fESD) ? static_cast<AliVTrack*>(fESD->GetTrack(idxTrack)) : static_cast<AliVTrack*>(fAOD->GetTrack(idxTrack));
if (!fHelper->IsTrackAcceptedBasicCharged(track))
continue;
if (fESD){
if (!fESDTrackCuts->AcceptTrack(dynamic_cast<AliESDtrack*>(track)))
continue;
}
if (fAOD){
AliAODTrack * trackAOD = dynamic_cast<AliAODTrack*>(track);
if (!trackAOD) {
AliError("Pointer to dynamic_cast<AliAODTrack*>(track) = ZERO");
continue;
}
if (!trackAOD->TestFilterBit(fAODtrackCutBit))
continue;
if(!(track->Pt() > ptRange[0] && track->Pt() <= ptRange[1] && TMath::Abs(track->Eta()) <= etaRange[1]))
continue;
}
Int_t gPdgCode = 0;
Int_t iPid = 0;
Double_t pid[3];
if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kPion))) { iPid = 1; gPdgCode = 211;}
else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kKaon))) { iPid = 2; gPdgCode = 321;}
else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kProton))){ iPid = 3; gPdgCode = 2212;}
else iPid = 0;
Double_t yP;
if ((iPid != 0) && !fHelper->IsTrackAcceptedRapidity(track, yP, iPid))
continue;
if (!fHelper->IsTrackAcceptedDCA(track))
continue;
Int_t isProbeParticle = 0;
if (fIsMC) {
Int_t label = TMath::Abs(track->GetLabel());
AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(label) : static_cast<AliVParticle*>(fArrayMC->At(label));
if (particle) {
if (TMath::Abs(particle->PdgCode()) == gPdgCode) {
++isProbeParticle;
if (particle->PdgCode() != (track->Charge()*gPdgCode))
++isProbeParticle;
}
}
}
Float_t dca[] = {0.,0.};
Float_t cov[] = {0.,0.,0.};
if (fESD)
(static_cast<AliESDtrack*>(track))->GetImpactParameters(dca,cov);
if (iPid == 0)
yP = track->Eta();
if (iPid != 0) {
Double_t aTracka[10] = {fCentralityBin,0,
static_cast<Double_t>(track->Charge()),
track->Pt(),
track->GetTPCmomentum(),track->GetTPCsignal(),pid[0],pid[1],pid[2],
static_cast<Double_t>(isProbeParticle)};
Double_t aTrackb[9] = {fCentralityBin,0,
static_cast<Double_t>(track->Charge()),
track->Pt(),track->Eta(),yP,
track->Phi(),dca[0],dca[1]};
fHnQAa->Fill(aTracka);
fHnQAb->Fill(aTrackb);
}
Double_t aTracka[10] = {fCentralityBin,
static_cast<Double_t>(iPid),
static_cast<Double_t>(track->Charge()),
track->Pt(),
track->GetTPCmomentum(),
track->GetTPCsignal(),pid[0],pid[1],pid[2],
static_cast<Double_t>(isProbeParticle)};
Double_t aTrackb[9] = {fCentralityBin,
static_cast<Double_t>(iPid),
static_cast<Double_t>(track->Charge()),
track->Pt(),track->Eta(),yP, track->Phi(),dca[0],dca[1]};
fHnQAa->Fill(aTracka);
fHnQAb->Fill(aTrackb);
}
return;
}
AliEbyEPidRatioQA.cxx:100 AliEbyEPidRatioQA.cxx:101 AliEbyEPidRatioQA.cxx:102 AliEbyEPidRatioQA.cxx:103 AliEbyEPidRatioQA.cxx:104 AliEbyEPidRatioQA.cxx:105 AliEbyEPidRatioQA.cxx:106 AliEbyEPidRatioQA.cxx:107 AliEbyEPidRatioQA.cxx:108 AliEbyEPidRatioQA.cxx:109 AliEbyEPidRatioQA.cxx:110 AliEbyEPidRatioQA.cxx:111 AliEbyEPidRatioQA.cxx:112 AliEbyEPidRatioQA.cxx:113 AliEbyEPidRatioQA.cxx:114 AliEbyEPidRatioQA.cxx:115 AliEbyEPidRatioQA.cxx:116 AliEbyEPidRatioQA.cxx:117 AliEbyEPidRatioQA.cxx:118 AliEbyEPidRatioQA.cxx:119 AliEbyEPidRatioQA.cxx:120 AliEbyEPidRatioQA.cxx:121 AliEbyEPidRatioQA.cxx:122 AliEbyEPidRatioQA.cxx:123 AliEbyEPidRatioQA.cxx:124 AliEbyEPidRatioQA.cxx:125 AliEbyEPidRatioQA.cxx:126 AliEbyEPidRatioQA.cxx:127 AliEbyEPidRatioQA.cxx:128 AliEbyEPidRatioQA.cxx:129 AliEbyEPidRatioQA.cxx:130 AliEbyEPidRatioQA.cxx:131 AliEbyEPidRatioQA.cxx:132 AliEbyEPidRatioQA.cxx:133 AliEbyEPidRatioQA.cxx:134 AliEbyEPidRatioQA.cxx:135 AliEbyEPidRatioQA.cxx:136 AliEbyEPidRatioQA.cxx:137 AliEbyEPidRatioQA.cxx:138 AliEbyEPidRatioQA.cxx:139 AliEbyEPidRatioQA.cxx:140 AliEbyEPidRatioQA.cxx:141 AliEbyEPidRatioQA.cxx:142 AliEbyEPidRatioQA.cxx:143 AliEbyEPidRatioQA.cxx:144 AliEbyEPidRatioQA.cxx:145 AliEbyEPidRatioQA.cxx:146 AliEbyEPidRatioQA.cxx:147 AliEbyEPidRatioQA.cxx:148 AliEbyEPidRatioQA.cxx:149 AliEbyEPidRatioQA.cxx:150 AliEbyEPidRatioQA.cxx:151 AliEbyEPidRatioQA.cxx:152 AliEbyEPidRatioQA.cxx:153 AliEbyEPidRatioQA.cxx:154 AliEbyEPidRatioQA.cxx:155 AliEbyEPidRatioQA.cxx:156 AliEbyEPidRatioQA.cxx:157 AliEbyEPidRatioQA.cxx:158 AliEbyEPidRatioQA.cxx:159 AliEbyEPidRatioQA.cxx:160 AliEbyEPidRatioQA.cxx:161 AliEbyEPidRatioQA.cxx:162 AliEbyEPidRatioQA.cxx:163 AliEbyEPidRatioQA.cxx:164 AliEbyEPidRatioQA.cxx:165 AliEbyEPidRatioQA.cxx:166 AliEbyEPidRatioQA.cxx:167 AliEbyEPidRatioQA.cxx:168 AliEbyEPidRatioQA.cxx:169 AliEbyEPidRatioQA.cxx:170 AliEbyEPidRatioQA.cxx:171 AliEbyEPidRatioQA.cxx:172 AliEbyEPidRatioQA.cxx:173 AliEbyEPidRatioQA.cxx:174 AliEbyEPidRatioQA.cxx:175 AliEbyEPidRatioQA.cxx:176 AliEbyEPidRatioQA.cxx:177 AliEbyEPidRatioQA.cxx:178 AliEbyEPidRatioQA.cxx:179 AliEbyEPidRatioQA.cxx:180 AliEbyEPidRatioQA.cxx:181 AliEbyEPidRatioQA.cxx:182 AliEbyEPidRatioQA.cxx:183 AliEbyEPidRatioQA.cxx:184 AliEbyEPidRatioQA.cxx:185 AliEbyEPidRatioQA.cxx:186 AliEbyEPidRatioQA.cxx:187 AliEbyEPidRatioQA.cxx:188 AliEbyEPidRatioQA.cxx:189 AliEbyEPidRatioQA.cxx:190 AliEbyEPidRatioQA.cxx:191 AliEbyEPidRatioQA.cxx:192 AliEbyEPidRatioQA.cxx:193 AliEbyEPidRatioQA.cxx:194 AliEbyEPidRatioQA.cxx:195 AliEbyEPidRatioQA.cxx:196 AliEbyEPidRatioQA.cxx:197 AliEbyEPidRatioQA.cxx:198 AliEbyEPidRatioQA.cxx:199 AliEbyEPidRatioQA.cxx:200 AliEbyEPidRatioQA.cxx:201 AliEbyEPidRatioQA.cxx:202 AliEbyEPidRatioQA.cxx:203 AliEbyEPidRatioQA.cxx:204 AliEbyEPidRatioQA.cxx:205 AliEbyEPidRatioQA.cxx:206 AliEbyEPidRatioQA.cxx:207 AliEbyEPidRatioQA.cxx:208 AliEbyEPidRatioQA.cxx:209 AliEbyEPidRatioQA.cxx:210 AliEbyEPidRatioQA.cxx:211 AliEbyEPidRatioQA.cxx:212 AliEbyEPidRatioQA.cxx:213 AliEbyEPidRatioQA.cxx:214 AliEbyEPidRatioQA.cxx:215 AliEbyEPidRatioQA.cxx:216 AliEbyEPidRatioQA.cxx:217 AliEbyEPidRatioQA.cxx:218 AliEbyEPidRatioQA.cxx:219 AliEbyEPidRatioQA.cxx:220 AliEbyEPidRatioQA.cxx:221 AliEbyEPidRatioQA.cxx:222 AliEbyEPidRatioQA.cxx:223 AliEbyEPidRatioQA.cxx:224 AliEbyEPidRatioQA.cxx:225 AliEbyEPidRatioQA.cxx:226 AliEbyEPidRatioQA.cxx:227 AliEbyEPidRatioQA.cxx:228 AliEbyEPidRatioQA.cxx:229 AliEbyEPidRatioQA.cxx:230 AliEbyEPidRatioQA.cxx:231 AliEbyEPidRatioQA.cxx:232 AliEbyEPidRatioQA.cxx:233 AliEbyEPidRatioQA.cxx:234 AliEbyEPidRatioQA.cxx:235 AliEbyEPidRatioQA.cxx:236 AliEbyEPidRatioQA.cxx:237 AliEbyEPidRatioQA.cxx:238 AliEbyEPidRatioQA.cxx:239 AliEbyEPidRatioQA.cxx:240 AliEbyEPidRatioQA.cxx:241 AliEbyEPidRatioQA.cxx:242 AliEbyEPidRatioQA.cxx:243 AliEbyEPidRatioQA.cxx:244 AliEbyEPidRatioQA.cxx:245 AliEbyEPidRatioQA.cxx:246 AliEbyEPidRatioQA.cxx:247 AliEbyEPidRatioQA.cxx:248 AliEbyEPidRatioQA.cxx:249 AliEbyEPidRatioQA.cxx:250 AliEbyEPidRatioQA.cxx:251 AliEbyEPidRatioQA.cxx:252 AliEbyEPidRatioQA.cxx:253 AliEbyEPidRatioQA.cxx:254 AliEbyEPidRatioQA.cxx:255 AliEbyEPidRatioQA.cxx:256 AliEbyEPidRatioQA.cxx:257 AliEbyEPidRatioQA.cxx:258 AliEbyEPidRatioQA.cxx:259 AliEbyEPidRatioQA.cxx:260 AliEbyEPidRatioQA.cxx:261 AliEbyEPidRatioQA.cxx:262 AliEbyEPidRatioQA.cxx:263 AliEbyEPidRatioQA.cxx:264 AliEbyEPidRatioQA.cxx:265 AliEbyEPidRatioQA.cxx:266 AliEbyEPidRatioQA.cxx:267 AliEbyEPidRatioQA.cxx:268 AliEbyEPidRatioQA.cxx:269 AliEbyEPidRatioQA.cxx:270 AliEbyEPidRatioQA.cxx:271 AliEbyEPidRatioQA.cxx:272