20 #include <TClonesArray.h>
22 #include <THashList.h>
34 #include "AliAnalysisManager.h"
35 #include "AliAnalysisUtils.h"
36 #include "AliAODMCHeader.h"
37 #include "AliAODInputHandler.h"
38 #include "AliAODMCParticle.h"
39 #include "AliAODTrack.h"
43 #include "AliEMCALTriggerPatchInfo.h"
44 #include "AliEMCALGeometry.h"
45 #include "AliEMCALRecoUtils.h"
46 #include "AliESDEvent.h"
47 #include "AliESDtrack.h"
48 #include "AliGenPythiaEventHeader.h"
49 #include "AliInputEventHandler.h"
50 #include "AliMCEvent.h"
51 #include "AliOADBContainer.h"
52 #include "AliVVertex.h"
61 namespace EMCalTriggerPtAnalysis {
63 AliAnalysisTaskChargedParticlesRefMC::AliAnalysisTaskChargedParticlesRefMC():
73 fEtaLabCut(-0.5, 0.5),
74 fEtaCmsCut(-0.13, 0.13),
75 fPhiCut(0., TMath::TwoPi()),
94 fEtaLabCut(-0.5, 0.5),
95 fEtaCmsCut(-0.13, 0.13),
96 fPhiCut(0., TMath::TwoPi()),
107 if(fTriggerSelection)
delete fTriggerSelection;
108 if(fHistos)
delete fHistos;
117 if(!fTrackCuts)
InitializeTrackCuts(
"standard",fInputHandler->IsA() == AliAODInputHandler::Class());
119 PtBinning newbinning;
121 fHistos->CreateTH1(
"hPtHard",
"Pt of the hard interaction", 1000, 0., 500);
122 TString triggers[7] = {
"True",
"MB",
"EMC7",
"EJ1",
"EJ2",
"EG1",
"EG2"};
123 Double_t ptcuts[5] = {1., 2., 5., 10., 20.};
124 TString species[6] = {
"El",
"Mu",
"Pi",
"Ka",
"Pr",
"Ot"};
125 for(
TString *trg = triggers; trg < triggers +
sizeof(triggers)/
sizeof(
TString); trg++){
126 fHistos->CreateTH1(Form(
"hEventCount%s", trg->Data()), Form(
"Event Counter for trigger class %s", trg->Data()), 1, 0.5, 1.5);
127 fHistos->CreateTH1(Form(
"hVertexBefore%s", trg->Data()), Form(
"Vertex distribution before z-cut for trigger class %s", trg->Data()), 500, -50, 50);
128 fHistos->CreateTH1(Form(
"hVertexAfter%s", trg->Data()), Form(
"Vertex distribution after z-cut for trigger class %s", trg->Data()), 100, -10, 10);
129 fHistos->CreateTH1(Form(
"hPtEtaAll%s", trg->Data()), Form(
"Charged particle pt distribution all eta trigger %s", trg->Data()), newbinning);
130 fHistos->CreateTH1(Form(
"hPtEtaCent%s", trg->Data()), Form(
"Charged particle pt distribution central eta trigger %s", trg->Data()), newbinning);
131 fHistos->CreateTH1(Form(
"hPtEMCALEtaAll%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution all eta trigger %s", trg->Data()), newbinning);
132 fHistos->CreateTH1(Form(
"hPtEMCALEtaCent%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution central eta trigger %s", trg->Data()), newbinning);
133 fHistos->CreateTH1(Form(
"hPtEMCALNoTRDEtaAll%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution all eta trigger %s", trg->Data()), newbinning);
134 fHistos->CreateTH1(Form(
"hPtEMCALNoTRDEtaCent%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution central eta trigger %s", trg->Data()), newbinning);
135 fHistos->CreateTH1(Form(
"hPtEMCALWithTRDEtaAll%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution all eta trigger %s", trg->Data()), newbinning);
136 fHistos->CreateTH1(Form(
"hPtEMCALWithTRDEtaCent%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution central eta trigger %s", trg->Data()), newbinning);
137 for(
TString *piditer = species; piditer < species +
sizeof(species)/
sizeof(
TString); ++piditer){
138 fHistos->CreateTH1(Form(
"hPtEtaAll%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s pt distribution all eta trigger %s", piditer->Data(), trg->Data()), newbinning);
139 fHistos->CreateTH1(Form(
"hPtEtaCent%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s pt distribution central eta trigger %s", piditer->Data(), trg->Data()), newbinning);
140 fHistos->CreateTH1(Form(
"hPtEMCALEtaAll%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL pt distribution all eta trigger %s", piditer->Data(), trg->Data()), newbinning);
141 fHistos->CreateTH1(Form(
"hPtEMCALEtaCent%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL pt distribution central eta trigger %s", piditer->Data(), trg->Data()), newbinning);
142 fHistos->CreateTH1(Form(
"hPtEMCALNoTRDEtaAll%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL (no TRD in front) pt distribution all eta trigger %s", piditer->Data(), trg->Data()), newbinning);
143 fHistos->CreateTH1(Form(
"hPtEMCALNoTRDEtaCent%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL (no TRD in front) pt distribution central eta trigger %s", piditer->Data(), trg->Data()), newbinning);
144 fHistos->CreateTH1(Form(
"hPtEMCALWithTRDEtaAll%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL (with TRD in front) pt distribution all eta trigger %s", piditer->Data(), trg->Data()), newbinning);
145 fHistos->CreateTH1(Form(
"hPtEMCALWithTRDEtaCent%s%s", piditer->Data(), trg->Data()), Form(
"Charged %s in EMCAL (with TRD in front) pt distribution central eta trigger %s", piditer->Data(), trg->Data()), newbinning);
147 for(
int ipt = 0; ipt < 5; ipt++){
149 Form(
"hEtaLabDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
150 Form(
"Eta (lab) distribution without etacut for tracks with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
156 Form(
"hEtaLabDistCutPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
157 Form(
"Eta (lab) distribution with etacut for tracks with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
163 Form(
"hEtaCentDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
164 Form(
"Eta (cent) distribution without etacut for tracks with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
170 Form(
"hEtaCentDistCutPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
171 Form(
"Eta (cent) distribution with etacut for tracks with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
177 Form(
"hEtaLabDistAllEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
178 Form(
"Eta (lab) distribution without etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
184 Form(
"hEtaLabDistCutEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
185 Form(
"Eta (lab) distribution with etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
191 Form(
"hEtaCentDistAllEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
192 Form(
"Eta (cent) distribution without etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
198 Form(
"hEtaCentDistCutEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
199 Form(
"Eta (cent) distribution with etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
205 Form(
"hPhiDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
206 Form(
"#phi distribution of particles with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
214 for(
auto hist : *(fHistos->GetListOfHistograms())){
222 fEventTriggers.clear();
223 AliDebugStream(1) << GetName() <<
": Using custom event selection" << std::endl;
224 if(!MCEvent())
return false;
226 fEventWeight = fWeightHandler ? fWeightHandler->GetEventWeight(
fPythiaHeader) : 1.;
236 if((isMinBias = fInputHandler->IsEventSelected() & AliVEvent::kINT7)) fEventTriggers.push_back(
"MB");
240 fEventTriggers.push_back(
"EMC7");
242 fEventTriggers.push_back(
"EJ1");
244 fEventTriggers.push_back(
"EJ2");
246 fEventTriggers.push_back(
"EG1");
248 fEventTriggers.push_back(
"EG2");
250 if(!fEventTriggers.size()){
251 AliDebugStream(1) << GetName() <<
": No trigger selected" << std::endl;
254 const AliVVertex *vtx = fInputEvent->GetPrimaryVertex();
255 if(vtx->GetNContributors() < 1)
return false;
259 fHistos->FillTH1(
"hVertexBeforeTrue", vtx->GetZ(), fEventWeight);
260 for(
const auto &trg : fEventTriggers) fHistos->FillTH1(Form(
"hVertexBefore%s", trg.c_str()), vtx->GetZ(), fEventWeight);
262 if(vtx->GetZ() < -10. || vtx->GetZ() > 10.)
return false;
266 fHistos->FillTH1(
"hEventCountTrue", 1, fEventWeight);
267 fHistos->FillTH1(
"hVertexAfterTrue", vtx->GetZ(), fEventWeight);
268 for(
const auto &trg : fEventTriggers){
269 fHistos->FillTH1(Form(
"hEventCount%s", trg.c_str()), 1, fEventWeight);
270 fHistos->FillTH1(Form(
"hVertexAfter%s", trg.c_str()), vtx->GetZ(), fEventWeight);
280 AliErrorStream() << GetName() <<
": Failed initializing AliAnalysisTaskEmcal" << std::endl;
285 if(fNameAcceptanceOADB.Length() && fTriggerSelection){
286 AliDebugStream(1) << GetName() <<
": Loading acceptance map from OADB file " << fNameAcceptanceOADB << std::endl;
287 AliOADBContainer acceptanceCont(
"AliEmcalTriggerAcceptance");
288 acceptanceCont.InitFromFile(fNameAcceptanceOADB.Data(),
"AliEmcalTriggerAcceptance");
289 TObjArray *acceptanceMaps =
dynamic_cast<TObjArray *
>(acceptanceCont.GetObject(fInputEvent->GetRunNumber()));
291 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"EG1")))){
292 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger EG1" << std::endl;
293 map->SetDirectory(
nullptr);
296 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"EG2")))){
297 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger EG2" << std::endl;
298 map->SetDirectory(
nullptr);
301 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"DG1")))){
302 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger DG1" << std::endl;
303 map->SetDirectory(
nullptr);
306 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"DG2")))){
307 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger DG2" << std::endl;
308 map->SetDirectory(
nullptr);
311 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"EJ1")))){
312 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger EJ1" << std::endl;
313 map->SetDirectory(
nullptr);
316 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"EJ2")))){
317 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger EJ2" << std::endl;
318 map->SetDirectory(
nullptr);
321 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"DJ1")))){
322 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger DJ1" << std::endl;
323 map->SetDirectory(
nullptr);
326 if((map = dynamic_cast<TH2 *>(acceptanceMaps->FindObject(
"DJ2")))){
327 AliDebugStream(1) << GetName() <<
": Found acceptance map for trigger DJ2" << std::endl;
328 map->SetDirectory(
nullptr);
342 AliVParticle *truepart = NULL;
344 for(
int ipart = 0; ipart < fMCEvent->GetNumberOfTracks(); ipart++){
345 truepart = fMCEvent->GetTrack(ipart);
348 if(!fEtaLabCut.IsInRange(truepart->Eta()))
continue;
349 if(!fPhiCut.IsInRange(truepart->Phi()))
continue;
350 if(TMath::Abs(truepart->Pt()) < 0.1)
continue;
351 if(!truepart->Charge())
continue;
353 if(!IsPhysicalPrimary(truepart, fMCEvent))
continue;
354 isEMCAL = (truepart->Phi() > 1.5 && truepart->Phi() < 3.1) ? kTRUE : kFALSE;
359 Double_t etacent = -1. * truepart->Eta() - TMath::Abs(fYshift);
362 Bool_t etacentcut = fEtaCmsCut.IsInRange(etacent);
366 switch(TMath::Abs(truepart->PdgCode())){
367 case kPiPlus: pid =
"Pi";
break;
368 case kMuonMinus: pid =
"Mu";
break;
369 case kElectron: pid =
"El";
break;
370 case kKPlus: pid =
"Ka";
break;
371 case kProton: pid =
"Pr";
break;
372 default: pid =
"Ot";
break;
376 FillTrackHistos(
"True", fEventWeight, truepart->Pt(), truepart->Eta() * fEtaSign, etacent, truepart->Phi(), etacentcut, isEMCAL, kFALSE, pid);
386 AliVTrack *checktrack(NULL);
387 AliVParticle *assocMC(NULL);
388 double ptparticle(-1.), etaparticle(-100.), etaEMCAL(0.), phiEMCAL(0.);
390 for(
int itrk = 0; itrk < fInputEvent->GetNumberOfTracks(); ++itrk){
391 checktrack =
dynamic_cast<AliVTrack *
>(fInputEvent->GetTrack(itrk));
392 if(!checktrack)
continue;
394 assocMC = fMCEvent->GetTrack(TMath::Abs(checktrack->GetLabel()));
395 if(!assocMC)
continue;
396 if(!IsPhysicalPrimary(assocMC, fMCEvent))
continue;
399 if(!fEtaLabCut.IsInRange(checktrack->Eta()))
continue;
400 if(!fPhiCut.IsInRange(checktrack->Phi()))
continue;
401 if(TMath::Abs(checktrack->Pt()) < 0.1)
continue;
402 if(checktrack->IsA() == AliESDtrack::Class()){
403 AliESDtrack copytrack(*(static_cast<AliESDtrack *>(checktrack)));
404 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(©track);
405 etaEMCAL = copytrack.GetTrackEtaOnEMCal();
406 phiEMCAL = copytrack.GetTrackPhiOnEMCal();
408 AliAODTrack copytrack(*(static_cast<AliAODTrack *>(checktrack)));
409 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(©track);
410 etaEMCAL = copytrack.GetTrackEtaOnEMCal();
411 phiEMCAL = copytrack.GetTrackPhiOnEMCal();
413 Int_t supermoduleID = -1;
414 isEMCAL =
fGeom->SuperModuleNumberFromEtaPhi(etaEMCAL, phiEMCAL, supermoduleID);
416 isEMCAL = isEMCAL && supermoduleID < 10;
417 hasTRD = isEMCAL && supermoduleID >= 4;
419 if(!fTrackCuts->IsTrackAccepted(checktrack))
continue;
421 ptparticle = TMath::Abs(assocMC->Pt());
422 etaparticle = assocMC->Eta();
427 Double_t etacent = -1. * checktrack->Eta() - TMath::Abs(fYshift);
430 Bool_t etacentcut = fEtaCmsCut.IsInRange(etacent);
434 switch(TMath::Abs(assocMC->PdgCode())){
435 case kPiPlus: assocpid =
"Pi";
break;
436 case kMuonMinus: assocpid =
"Mu";
break;
437 case kElectron: assocpid =
"El";
break;
438 case kKPlus: assocpid =
"Ka";
break;
439 case kProton: assocpid =
"Pr";
break;
440 default: assocpid =
"Ot";
break;
442 for(
const auto &trg : fEventTriggers)
443 FillTrackHistos(trg.c_str(), fEventWeight, ptparticle, checktrack->Eta() * fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD, assocpid);
448 void AliAnalysisTaskChargedParticlesRefMC::FillTrackHistos(
449 const char *eventclass,
461 fHistos->FillTH1(Form(
"hPtEtaAll%s", eventclass), TMath::Abs(pt), weight);
462 fHistos->FillTH1(Form(
"hPtEtaAll%s%s", pid, eventclass), TMath::Abs(pt), weight);
464 fHistos->FillTH1(Form(
"hPtEMCALEtaAll%s", eventclass), TMath::Abs(pt), weight);
465 fHistos->FillTH1(Form(
"hPtEMCALEtaAll%s%s", pid, eventclass), TMath::Abs(pt), weight);
467 fHistos->FillTH1(Form(
"hPtEMCALWithTRDEtaAll%s", eventclass), TMath::Abs(pt), weight);
468 fHistos->FillTH1(Form(
"hPtEMCALWithTRDEtaAll%s%s", pid, eventclass), TMath::Abs(pt), weight);
470 fHistos->FillTH1(Form(
"hPtEMCALNoTRDEtaAll%s", eventclass), TMath::Abs(pt), weight);
471 fHistos->FillTH1(Form(
"hPtEMCALNoTRDEtaAll%s%s", pid, eventclass), TMath::Abs(pt), weight);
475 int ptmin[5] = {1,2,5,10,20};
476 for(
int icut = 0; icut < 5; icut++){
477 if(TMath::Abs(pt) > static_cast<double>(ptmin[icut])){
478 fHistos->FillTH1(Form(
"hPhiDistAllPt%d%s", ptmin[icut], eventclass), phi, weight);
479 fHistos->FillTH1(Form(
"hEtaLabDistAllPt%d%s", ptmin[icut], eventclass), etalab, weight);
480 fHistos->FillTH1(Form(
"hEtaCentDistAllPt%d%s", ptmin[icut], eventclass), etacent, weight);
482 fHistos->FillTH1(Form(
"hEtaLabDistAllEMCALPt%d%s", ptmin[icut], eventclass), etalab, weight);
483 fHistos->FillTH1(Form(
"hEtaCentDistAllEMCALPt%d%s", ptmin[icut], eventclass), etacent, weight);
489 fHistos->FillTH1(Form(
"hPtEtaCent%s", eventclass), TMath::Abs(pt), weight);
490 fHistos->FillTH1(Form(
"hPtEtaCent%s%s", pid, eventclass), TMath::Abs(pt), weight);
492 fHistos->FillTH1(Form(
"hPtEMCALEtaCent%s", eventclass), TMath::Abs(pt), weight);
493 fHistos->FillTH1(Form(
"hPtEMCALEtaCent%s%s", pid, eventclass), TMath::Abs(pt), weight);
495 fHistos->FillTH1(Form(
"hPtEMCALWithTRDEtaCent%s", eventclass), TMath::Abs(pt), weight);
496 fHistos->FillTH1(Form(
"hPtEMCALWithTRDEtaCent%s%s", pid, eventclass), TMath::Abs(pt), weight);
498 fHistos->FillTH1(Form(
"hPtEMCALNoTRDEtaCent%s", eventclass), TMath::Abs(pt), weight);
499 fHistos->FillTH1(Form(
"hPtEMCALNoTRDEtaCent%s%s", pid, eventclass), TMath::Abs(pt), weight);
502 for(
int icut = 0; icut < 5; icut++){
503 if(TMath::Abs(pt) > static_cast<double>(ptmin[icut])){
504 fHistos->FillTH1(Form(
"hEtaLabDistCutPt%d%s", ptmin[icut], eventclass), etalab, weight);
505 fHistos->FillTH1(Form(
"hEtaCentDistCutPt%d%s", ptmin[icut], eventclass), etacent, weight);
507 fHistos->FillTH1(Form(
"hEtaLabDistCutEMCALPt%d%s", ptmin[icut], eventclass), etalab, weight);
508 fHistos->FillTH1(Form(
"hEtaCentDistCutEMCALPt%d%s", ptmin[icut], eventclass), etacent, weight);
522 TString AliAnalysisTaskChargedParticlesRefMC::GetFiredTriggerClasses(
const TClonesArray* triggerpatches) {
524 Int_t nEJ1 = 0, nEJ2 = 0, nEG1 = 0, nEG2 = 0;
525 double minADC_EJ1 = 260.,
529 for(TIter patchIter = TIter(triggerpatches).Begin(); patchIter != TIter::End(); ++patchIter){
530 AliEMCALTriggerPatchInfo *patch =
dynamic_cast<AliEMCALTriggerPatchInfo *
>(*patchIter);
531 if(!patch->IsOfflineSimple())
continue;
532 if(patch->IsJetHighSimple() && patch->GetADCOfflineAmp() > minADC_EJ1) nEJ1++;
533 if(patch->IsJetLowSimple() && patch->GetADCOfflineAmp() > minADC_EJ2) nEJ2++;
534 if(patch->IsGammaHighSimple() && patch->GetADCOfflineAmp() > minADC_EG1) nEG1++;
535 if(patch->IsGammaLowSimple() && patch->GetADCOfflineAmp() > minADC_EG2) nEG2++;
537 if(nEJ1) triggerstring +=
"EJ1";
539 if(triggerstring.Length()) triggerstring +=
",";
540 triggerstring +=
"EJ2";
543 if(triggerstring.Length()) triggerstring +=
",";
544 triggerstring +=
"EG1";
547 if(triggerstring.Length()) triggerstring +=
",";
548 triggerstring +=
"EG2";
550 return triggerstring;
553 Bool_t AliAnalysisTaskChargedParticlesRefMC::IsPhysicalPrimary(
const AliVParticle*
const part, AliMCEvent*
const mcevent) {
555 const AliAODMCParticle *aodmc =
dynamic_cast<const AliAODMCParticle *
>(part);
557 physprim = aodmc->IsPhysicalPrimary();
559 physprim = mcevent->IsPhysicalPrimary(part->GetLabel());
567 AliAnalysisTaskChargedParticlesRefMC::PtBinning::PtBinning() :
570 this->SetMinimum(0.);
571 this->AddStep(1, 0.05);
572 this->AddStep(2, 0.1);
573 this->AddStep(4, 0.2);
574 this->AddStep(7, 0.5);
575 this->AddStep(16, 1);
576 this->AddStep(36, 2);
577 this->AddStep(40, 4);
578 this->AddStep(50, 5);
579 this->AddStep(100, 10);
580 this->AddStep(200, 20);
EMCAL L1 Jet trigger, low threshold.
Bool_t fIsPythia
trigger, if it is a PYTHIA production
AliAnalysisTaskChargedParticlesRefMC()
static AliEmcalTrackSelection * TrackCutsFactory(TString name, Bool_t isAOD)
Base task in the EMCAL framework.
Bool_t fLocalInitialized
whether or not the task has been already initialized
DCAL L1 Jet trigger, high threshold.
EMCAL L1 Gamma trigger, high threshold.
void SetCaloTriggerPatchInfoName(const char *n)
EMCAL L1 Jet trigger, high threshold.
AliEMCALGeometry * fGeom
!emcal geometry
AliGenPythiaEventHeader * fPythiaHeader
!event Pythia header
AliAnalysisUtils * fAliAnalysisUtils
!vertex selection (optional)
Helper class creating user defined custom binning.
DCAL L1 Gamma trigger, high threshold.
EMCAL L1 Gamma trigger, low threshold.
virtual ~AliAnalysisTaskChargedParticlesRefMC()
Test class for charged particle distributions (MC case)
virtual Bool_t IsEventSelected()
AliEmcalList * fOutput
!output list
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
void SetMakeGeneralHistograms(Bool_t g)
TClonesArray * fTriggerPatchInfo
!trigger patch info array
void SetNeedEmcalGeom(Bool_t n)
Container class for histograms for the high- charged particle analysis.
void UserCreateOutputObjects()
virtual void UserCreateOutputObjects()
void InitializeTrackCuts(TString cutname, bool isAOD)
void SetTrackSelection(AliEmcalTrackSelection *sel)