21 #include <THashList.h>
25 #include "AliAnalysisUtils.h"
26 #include "AliAODInputHandler.h"
27 #include "AliAODTrack.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliEMCALRecoUtils.h"
31 #include "AliEMCALTriggerPatchInfo.h"
34 #include "AliESDtrackCuts.h"
35 #include "AliESDEvent.h"
36 #include "AliInputEventHandler.h"
37 #include "AliPIDResponse.h"
38 #include "AliTOFPIDResponse.h"
39 #include "AliVVertex.h"
48 namespace EMCalTriggerPtAnalysis {
53 AliAnalysisTaskChargedParticlesRef::AliAnalysisTaskChargedParticlesRef() :
57 fTriggerSelection(NULL),
60 fTriggerStringFromPatches(kFALSE),
76 AliAnalysisTaskSE(name),
79 fTriggerSelection(NULL),
82 fTriggerStringFromPatches(kFALSE),
91 DefineOutput(1, TList::Class());
112 TArrayD oldbinning, newbinning;
124 TString triggers[17] = {
126 "EJ1",
"EJ2",
"EG1",
"EG2",
127 "EMC7excl",
"EG1excl",
"EG2excl",
"EJ1excl",
"EJ2excl",
128 "E1combined",
"E1Jonly",
"E1Gonly",
"E2combined",
"E2Jonly",
"E2Gonly"
130 Double_t ptcuts[5] = {1., 2., 5., 10., 20.};
131 for(TString *trg = triggers; trg < triggers +
sizeof(triggers)/
sizeof(TString); trg++){
132 fHistos->
CreateTH1(Form(
"hEventCount%s", trg->Data()), Form(
"Event Counter for trigger class %s", trg->Data()), 1, 0.5, 1.5);
133 fHistos->
CreateTH1(Form(
"hVertexBefore%s", trg->Data()), Form(
"Vertex distribution before z-cut for trigger class %s", trg->Data()), 500, -50, 50);
134 fHistos->
CreateTH1(Form(
"hVertexAfter%s", trg->Data()), Form(
"Vertex distribution after z-cut for trigger class %s", trg->Data()), 100, -10, 10);
135 fHistos->
CreateTH1(Form(
"hPtEtaAllOldBinning%s", trg->Data()), Form(
"Charged particle pt distribution all eta old binning trigger %s", trg->Data()), oldbinning);
136 fHistos->
CreateTH1(Form(
"hPtEtaCentOldBinning%s", trg->Data()), Form(
"Charged particle pt distribution central eta old binning trigger %s", trg->Data()), oldbinning);
137 fHistos->
CreateTH1(Form(
"hPtEtaAllNewBinning%s", trg->Data()), Form(
"Charged particle pt distribution all eta new binning trigger %s", trg->Data()), newbinning);
138 fHistos->
CreateTH1(Form(
"hPtEtaCentNewBinning%s", trg->Data()), Form(
"Charged particle pt distribution central eta new binning trigger %s", trg->Data()), newbinning);
139 fHistos->
CreateTH1(Form(
"hPtEMCALEtaAllOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution all eta old binning trigger %s", trg->Data()), oldbinning);
140 fHistos->
CreateTH1(Form(
"hPtEMCALEtaCentOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution central eta old binning trigger %s", trg->Data()), oldbinning);
141 fHistos->
CreateTH1(Form(
"hPtEMCALEtaAllNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution all eta new binning trigger %s", trg->Data()), newbinning);
142 fHistos->
CreateTH1(Form(
"hPtEMCALEtaCentNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL pt distribution central eta new binning trigger %s", trg->Data()), newbinning);
143 fHistos->
CreateTH2(Form(
"hTPCdEdxEMCAL%s", trg->Data()), Form(
"TPC dE/dx of charged particles in the EMCAL region for trigger %s", trg->Data()), 400, -20., 20., 200, 0., 200.);
144 fHistos->
CreateTH2(Form(
"hTOFBetaEMCAL%s", trg->Data()), Form(
"TOF beta of charged particles in the EMCAL region for trigger %s", trg->Data()), 400, -20., 20., 150, 0., 1.5);
145 fHistos->
CreateTH1(Form(
"hPtEMCALNoTRDEtaAllOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution all eta old binning trigger %s", trg->Data()), oldbinning);
146 fHistos->
CreateTH1(Form(
"hPtEMCALNoTRDEtaCentOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution central eta old binning trigger %s", trg->Data()), oldbinning);
147 fHistos->
CreateTH1(Form(
"hPtEMCALNoTRDEtaAllNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution all eta new binning trigger %s", trg->Data()), newbinning);
148 fHistos->
CreateTH1(Form(
"hPtEMCALNoTRDEtaCentNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (no TRD in front) pt distribution central eta new binning trigger %s", trg->Data()), newbinning);
149 fHistos->
CreateTH1(Form(
"hPtEMCALWithTRDEtaAllOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution all eta old binning trigger %s", trg->Data()), oldbinning);
150 fHistos->
CreateTH1(Form(
"hPtEMCALWithTRDEtaCentOldBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution central eta old binning trigger %s", trg->Data()), oldbinning);
151 fHistos->
CreateTH1(Form(
"hPtEMCALWithTRDEtaAllNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution all eta new binning trigger %s", trg->Data()), newbinning);
152 fHistos->
CreateTH1(Form(
"hPtEMCALWithTRDEtaCentNewBinning%s", trg->Data()), Form(
"Charged particle in EMCAL (with TRD in front) pt distribution central eta new binning trigger %s", trg->Data()), newbinning);
153 for(
int ipt = 0; ipt < 5; ipt++){
155 Form(
"hEtaLabDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
156 Form(
"Eta (lab) distribution without etacut for tracks with Pt above 1 GeV/c trigger %s", trg->Data()),
162 Form(
"hEtaLabDistCutPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
163 Form(
"Eta (lab) distribution with etacut for tracks with Pt above 1 GeV/c trigger %s", trg->Data()),
169 Form(
"hEtaCentDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
170 Form(
"Eta (cent) distribution without etacut for tracks with Pt above 1 GeV/c trigger %s",
177 Form(
"hEtaCentDistCutPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
178 Form(
"Eta (cent) distribution with etacut for tracks with Pt above 1 GeV/c trigger %s", trg->Data()),
184 Form(
"hEtaLabDistAllEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
185 Form(
"Eta (lab) distribution without etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
191 Form(
"hEtaLabDistCutEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
192 Form(
"Eta (lab) distribution with etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
198 Form(
"hEtaCentDistAllEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
199 Form(
"Eta (cent) distribution without etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
205 Form(
"hEtaCentDistCutEMCALPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
206 Form(
"Eta (cent) distribution with etacut for tracks in EMCAL with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
212 Form(
"hPhiDistAllPt%d%s", static_cast<Int_t>(ptcuts[ipt]), trg->Data()),
213 Form(
"#phi distribution of particles with Pt above %.1f GeV/c trigger %s", ptcuts[ipt], trg->Data()),
234 fGeometry = AliEMCALGeometry::GetInstance();
239 TClonesArray *triggerpatches =
static_cast<TClonesArray *
>(fInputEvent->FindListObject(
"EmcalTriggers"));
240 TString triggerstring =
"";
244 triggerstring = fInputEvent->GetFiredTriggerClasses();
246 UInt_t selectionstatus = fInputHandler->IsEventSelected();
247 Bool_t isMinBias = selectionstatus & AliVEvent::kINT7,
248 isEJ1 = (selectionstatus & AliVEvent::kEMCEJE) && triggerstring.Contains(
"EJ1"),
249 isEJ2 = (selectionstatus & AliVEvent::kEMCEJE) && triggerstring.Contains(
"EJ2"),
250 isEG1 = (selectionstatus & AliVEvent::kEMCEGA) && triggerstring.Contains(
"EG1"),
251 isEG2 = (selectionstatus & AliVEvent::kEMCEGA) && triggerstring.Contains(
"EG2"),
252 isEMC7 = (selectionstatus & AliVEvent::kEMC7) && triggerstring.Contains(
"CEMC7");
260 if(!(isMinBias || isEMC7 || isEG1 || isEG2 || isEJ1 || isEJ2))
return;
261 const AliVVertex *vtx = fInputEvent->GetPrimaryVertex();
263 if(vtx->GetNContributors() < 1)
return;
264 if(fInputEvent->IsA() == AliESDEvent::Class() &&
fAnalysisUtil->IsFirstEventInChunk(fInputEvent))
return;
265 bool isSelected = kTRUE;
266 if(!
fAnalysisUtil->IsVertexSelected2013pA(fInputEvent)) isSelected = kFALSE;
267 if(
fAnalysisUtil->IsPileUpEvent(fInputEvent)) isSelected = kFALSE;
269 if(vtx->GetZ() < -10. || vtx->GetZ() > 10.) isSelected = kFALSE;
296 if(!(isMinBias || isEJ2)){
311 if(!(isEJ1 || isEJ2)){
318 if(!(isMinBias || isEG2 )){
321 if(!(isEJ1 || isEJ2)){
326 if(!isSelected)
return;
337 AliVTrack *checktrack(NULL);
338 int ptmin[5] = {1,2,5,10,20};
339 Bool_t isEMCAL(kFALSE), hasTRD(kFALSE);
340 Double_t etaEMCAL(0.), phiEMCAL(0.);
341 for(
int itrk = 0; itrk < fInputEvent->GetNumberOfTracks(); ++itrk){
342 checktrack =
dynamic_cast<AliVTrack *
>(fInputEvent->GetTrack(itrk));
343 if(!checktrack)
continue;
345 if(TMath::Abs(checktrack->Pt()) < 0.1)
continue;
346 if(checktrack->IsA() == AliESDtrack::Class()){
347 AliESDtrack copytrack(*(static_cast<AliESDtrack *>(checktrack)));
348 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(©track);
349 etaEMCAL = copytrack.GetTrackEtaOnEMCal();
350 phiEMCAL = copytrack.GetTrackPhiOnEMCal();
352 AliAODTrack copytrack(*(static_cast<AliAODTrack *>(checktrack)));
353 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(©track);
354 etaEMCAL = copytrack.GetTrackEtaOnEMCal();
355 phiEMCAL = copytrack.GetTrackPhiOnEMCal();
357 Int_t supermoduleID = -1;
358 isEMCAL =
fGeometry->SuperModuleNumberFromEtaPhi(etaEMCAL, phiEMCAL, supermoduleID);
360 isEMCAL = isEMCAL && supermoduleID < 10;
361 hasTRD = isEMCAL && supermoduleID >= 4;
366 Double_t etacent = -1. * checktrack->Eta() - TMath::Abs(
fYshift);
375 FillTrackHistos(
"MB", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
379 FillTrackHistos(
"EMC7", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
382 FillTrackHistos(
"EMC7excl", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
387 FillTrackHistos(
"EJ2", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
391 FillTrackHistos(
"EJ2excl", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
395 FillTrackHistos(
"E2combined", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
398 FillTrackHistos(
"E2Jonly", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
403 FillTrackHistos(
"EJ1", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
406 if(!(isMinBias || isEJ2)){
407 FillTrackHistos(
"EJ1excl", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
411 FillTrackHistos(
"E1combined", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
414 FillTrackHistos(
"E1Jonly", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
419 FillTrackHistos(
"EG2", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
423 FillTrackHistos(
"EG2excl", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
426 if(!(isEJ2 || isEJ1)){
427 FillTrackHistos(
"E2Gonly", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
432 FillTrackHistos(
"EG1", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
434 if(!(isMinBias || isEG2)){
435 FillTrackHistos(
"EG1excl", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
438 if(!(isEJ1 || isEJ2)){
439 FillTrackHistos(
"E1Gonly", checktrack->Pt(), checktrack->Eta() *
fEtaSign, etacent, checktrack->Phi(), etacentcut, isEMCAL, hasTRD);
454 const std::string &triggerclass,
460 fHistos->
FillTH1(Form(
"hVertexBefore%s", triggerclass.c_str()), vtxz);
464 fHistos->
FillTH1(Form(
"hVertexAfter%s", triggerclass.c_str()), vtxz);
479 const std::string &eventclass,
489 fHistos->
FillTH1(Form(
"hPtEtaAllNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
490 fHistos->
FillTH1(Form(
"hPtEtaAllOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
492 fHistos->
FillTH1(Form(
"hPtEMCALEtaAllNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
493 fHistos->
FillTH1(Form(
"hPtEMCALEtaAllOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
495 fHistos->
FillTH1(Form(
"hPtEMCALWithTRDEtaAllNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
496 fHistos->
FillTH1(Form(
"hPtEMCALWithTRDEtaAllOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
498 fHistos->
FillTH1(Form(
"hPtEMCALNoTRDEtaAllNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
499 fHistos->
FillTH1(Form(
"hPtEMCALNoTRDEtaAllOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
503 int ptmin[5] = {1,2,5,10,20};
504 for(
int icut = 0; icut < 5; icut++){
505 if(TMath::Abs(pt) >
static_cast<double>(ptmin[icut])){
506 fHistos->
FillTH1(Form(
"hPhiDistAllPt%d%s", ptmin[icut], eventclass.c_str()), phi);
507 fHistos->
FillTH1(Form(
"hEtaLabDistAllPt%d%s", ptmin[icut], eventclass.c_str()), etalab);
508 fHistos->
FillTH1(Form(
"hEtaCentDistAllPt%d%s", ptmin[icut], eventclass.c_str()), etacent);
510 fHistos->
FillTH1(Form(
"hEtaLabDistAllEMCALPt%d%s", ptmin[icut], eventclass.c_str()), etalab);
511 fHistos->
FillTH1(Form(
"hEtaCentDistAllEMCALPt%d%s", ptmin[icut], eventclass.c_str()), etacent);
517 fHistos->
FillTH1(Form(
"hPtEtaCentNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
518 fHistos->
FillTH1(Form(
"hPtEtaCentOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
520 fHistos->
FillTH1(Form(
"hPtEMCALEtaCentNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
521 fHistos->
FillTH1(Form(
"hPtEMCALEtaCentOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
523 fHistos->
FillTH1(Form(
"hPtEMCALWithTRDEtaCentNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
524 fHistos->
FillTH1(Form(
"hPtEMCALWithTRDEtaCentOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
526 fHistos->
FillTH1(Form(
"hPtEMCALNoTRDEtaCentNewBinning%s", eventclass.c_str()), TMath::Abs(pt));
527 fHistos->
FillTH1(Form(
"hPtEMCALNoTRDEtaCentOldBinning%s", eventclass.c_str()), TMath::Abs(pt));
530 for(
int icut = 0; icut < 5; icut++){
531 if(TMath::Abs(pt) >
static_cast<double>(ptmin[icut])){
532 fHistos->
FillTH1(Form(
"hEtaLabDistCutPt%d%s", ptmin[icut], eventclass.c_str()), etalab);
533 fHistos->
FillTH1(Form(
"hEtaCentDistCutPt%d%s", ptmin[icut], eventclass.c_str()), etacent);
535 fHistos->
FillTH1(Form(
"hEtaLabDistCutEMCALPt%d%s", ptmin[icut], eventclass.c_str()), etalab);
536 fHistos->
FillTH1(Form(
"hEtaCentDistCutEMCALPt%d%s", ptmin[icut], eventclass.c_str()), etacent);
544 const std::string &eventclass,
547 if(TMath::Abs(trk.Eta()) > 0.3)
return;
548 double poverz = TMath::Abs(trk.P())/static_cast<double>(trk.Charge());
549 fHistos->
FillTH2(Form(
"hTPCdEdxEMCAL%s", eventclass.c_str()), poverz, trk.GetTPCsignal());
550 if(!(trk.GetStatus() & AliVTrack::kTOFpid))
return;
552 Double_t trtime = (trk.GetTOFsignal() - fInputHandler->GetPIDResponse()->GetTOFResponse().GetTimeZero()) * 1e-12;
553 Double_t v = trk.GetIntegratedLength()/(100. * trtime);
554 Double_t beta = v / TMath::C();
555 fHistos->
FillTH2(Form(
"hTOFBetaEMCAL%s", eventclass.c_str()), poverz, beta);
573 std::vector<double> mybinning;
574 std::map<double,double> definitions;
575 definitions.insert(std::pair<double,double>(2.5, 0.1));
576 definitions.insert(std::pair<double,double>(7., 0.25));
577 definitions.insert(std::pair<double,double>(15., 0.5));
578 definitions.insert(std::pair<double,double>(25., 1.));
579 definitions.insert(std::pair<double,double>(40., 2.5));
580 definitions.insert(std::pair<double,double>(50., 5.));
581 definitions.insert(std::pair<double,double>(100., 10.));
582 double currentval = 0;
583 for(std::map<double,double>::iterator
id = definitions.begin();
id != definitions.end(); ++id){
584 double limit =
id->first, binwidth =
id->second;
585 while(currentval < limit){
586 currentval += binwidth;
587 mybinning.push_back(currentval);
590 binning.Set(mybinning.size());
592 for(std::vector<double>::iterator it = mybinning.begin(); it != mybinning.end(); ++it)
601 std::vector<double> mybinning;
602 std::map<double,double> definitions;
603 definitions.insert(std::pair<double, double>(1, 0.05));
604 definitions.insert(std::pair<double, double>(2, 0.1));
605 definitions.insert(std::pair<double, double>(4, 0.2));
606 definitions.insert(std::pair<double, double>(7, 0.5));
607 definitions.insert(std::pair<double, double>(16, 1));
608 definitions.insert(std::pair<double, double>(36, 2));
609 definitions.insert(std::pair<double, double>(40, 4));
610 definitions.insert(std::pair<double, double>(50, 5));
611 definitions.insert(std::pair<double, double>(100, 10));
612 definitions.insert(std::pair<double, double>(200, 20));
613 double currentval = 0.;
614 mybinning.push_back(currentval);
615 for(std::map<double,double>::iterator
id = definitions.begin();
id != definitions.end(); ++id){
616 double limit =
id->first, binwidth =
id->second;
617 while(currentval < limit){
618 currentval += binwidth;
619 mybinning.push_back(currentval);
622 binning.Set(mybinning.size());
624 for(std::vector<double>::iterator it = mybinning.begin(); it != mybinning.end(); ++it)
634 TString triggerstring =
"";
635 Int_t nEJ1 = 0, nEJ2 = 0, nEG1 = 0, nEG2 = 0;
636 double minADC_EJ1 = 260.,
640 for(TIter patchIter = TIter(triggerpatches).Begin(); patchIter != TIter::End(); ++patchIter){
641 AliEMCALTriggerPatchInfo *patch =
dynamic_cast<AliEMCALTriggerPatchInfo *
>(*patchIter);
642 if(!patch->IsOfflineSimple())
continue;
643 if(patch->IsJetHighSimple() && patch->GetADCOfflineAmp() > minADC_EJ1) nEJ1++;
644 if(patch->IsJetLowSimple() && patch->GetADCOfflineAmp() > minADC_EJ2) nEJ2++;
645 if(patch->IsGammaHighSimple() && patch->GetADCOfflineAmp() > minADC_EG1) nEG1++;
646 if(patch->IsGammaLowSimple() && patch->GetADCOfflineAmp() > minADC_EG2) nEG2++;
648 if(nEJ1) triggerstring +=
"EJ1";
650 if(triggerstring.Length()) triggerstring +=
",";
651 triggerstring +=
"EJ2";
654 if(triggerstring.Length()) triggerstring +=
",";
655 triggerstring +=
"EG1";
658 if(triggerstring.Length()) triggerstring +=
",";
659 triggerstring +=
"EG2";
661 return triggerstring;
Double_t fEtaSign
Sign of the eta distribution (swaps when beam directions swap): p-Pb: +1, Pb-p: -1.
AliEmcalTriggerOfflineSelection * fTriggerSelection
Offline trigger selection.
AliEmcalTrackSelection * fTrackCuts
Standard track selection.
void UserCreateOutputObjects()
static AliEmcalTrackSelection * TrackCutsFactory(TString name, Bool_t isAOD)
virtual ~AliAnalysisTaskChargedParticlesRef()
Unit test class for charged particle distributions.
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
TString GetFiredTriggerClassesFromPatches(const TClonesArray *triggerpatches) const
AliEMCALGeometry * fGeometry
EMCAL geometry methods.
Double_t fYshift
Rapidity shift.
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
THashList * GetListOfHistograms() const
Bool_t fTriggerStringFromPatches
Do rebuild the trigger string from trigger patches.
AliAnalysisTaskChargedParticlesRef()
void FillPIDHistos(const std::string &eventclass, const AliVTrack &track)
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
void CreateNewPtBinning(TArrayD &binning) const
void SetTrackSelection(AliEmcalTrackSelection *sel)
void FillEventCounterHists(const std::string &triggerclass, double vtxz, bool isSelected)
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Bool_t IsOfflineSelected(EmcalTriggerClass trgcls, const TClonesArray *const triggerpatches) const
AliAnalysisUtils * fAnalysisUtil
Event selection.
void UserExec(Option_t *)
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Double_t fEtaCmsCut[2]
Cut applied in Eta centre-of-mass frame.
Container class for histograms for the high- charged particle analysis.
THistManager * fHistos
Histogram manager.
void InitializeTrackCuts(TString cutname, bool isAOD)
Int_t GetRunNumber(TString)
void FillTrackHistos(const std::string &eventclass, Double_t pt, Double_t eta, Double_t etacent, Double_t phi, Bool_t etacut, Bool_t inEmcal, Bool_t hasTRD)
Double_t fEtaLabCut[2]
Cut applied in Eta Lab frame.
void CreateOldPtBinning(TArrayD &binning) const
virtual bool IsTrackAccepted(AliVTrack *const trk)=0