9 #include <TClonesArray.h>
19 #include "AliAODEvent.h"
20 #include "AliAnalysisManager.h"
21 #include "AliCentrality.h"
22 #include "AliEMCALGeometry.h"
23 #include "AliESDEvent.h"
25 #include "AliEventplane.h"
26 #include "AliInputEventHandler.h"
28 #include "AliMCParticle.h"
29 #include "AliVCluster.h"
30 #include "AliVEventHandler.h"
31 #include "AliVParticle.h"
32 #include "AliVCaloTrigger.h"
33 #include "AliGenPythiaEventHeader.h"
34 #include "AliAODMCHeader.h"
35 #include "AliMCEvent.h"
36 #include "AliAnalysisUtils.h"
37 #include "AliEmcalTriggerPatchInfoAP.h"
48 fGeneralHistograms(kFALSE),
53 fCaloTriggerPatchInfoName(),
60 fUseAliAnaUtils(kFALSE),
61 fRejectPileup(kFALSE),
62 fTklVsClusSPDCut(kFALSE),
63 fOffTrigger(AliVEvent::kAny),
69 fMinPtTrackInEmcal(0),
70 fEventPlaneVsEmcal(-1),
76 fSelectPtHardBin(-999),
80 fNeedEmcalGeom(kTRUE),
84 fEMCalTriggerMode(kOverlapWithLowThreshold),
85 fAliAnalysisUtils(0x0),
107 fHistTrialsAfterSel(0),
108 fHistEventsAfterSel(0),
109 fHistXsectionAfterSel(0),
117 fHistEventRejection(0),
118 fHistTriggerClasses(0)
126 fParticleCollArray.SetOwner(kTRUE);
127 fClusterCollArray.SetOwner(kTRUE);
132 AliAnalysisTaskSE(name),
134 fGeneralHistograms(kFALSE),
135 fInitialized(kFALSE),
139 fCaloTriggerPatchInfoName(),
146 fUseAliAnaUtils(kFALSE),
147 fRejectPileup(kFALSE),
148 fTklVsClusSPDCut(kFALSE),
149 fOffTrigger(AliVEvent::kAny),
151 fTriggerTypeSel(kND),
155 fMinPtTrackInEmcal(0),
156 fEventPlaneVsEmcal(-1),
157 fMinEventPlane(-1e6),
162 fSelectPtHardBin(-999),
166 fNeedEmcalGeom(kTRUE),
167 fParticleCollArray(),
170 fEMCalTriggerMode(kOverlapWithLowThreshold),
171 fAliAnalysisUtils(0x0),
178 fTriggerPatchInfo(0),
193 fHistTrialsAfterSel(0),
194 fHistEventsAfterSel(0),
195 fHistXsectionAfterSel(0),
203 fHistEventRejection(0),
204 fHistTriggerClasses(0)
216 DefineOutput(1, TList::Class());
231 else AliError(Form(
"%s in SetClusPtCut(...): container %d not found",GetName(),c));
239 else AliError(Form(
"%s in SetClusTimeCut(...): container %d not found",GetName(),c));
247 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
257 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
265 else AliError(Form(
"%s in SetTrackPhiLimits(...): container %d not found",GetName(),c));
273 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
275 AliVEventHandler *evhand = mgr->GetInputEventHandler();
277 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
285 AliError(
"Event handler not found!");
289 AliError(
"Analysis manager not found!");
321 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 11, 0, 11);
322 fHistTrials->GetXaxis()->SetTitle(
"p_{T} hard bin");
326 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 11, 0, 11);
327 fHistEvents->GetXaxis()->SetTitle(
"p_{T} hard bin");
331 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 11, 0, 11);
336 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
337 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
339 for (Int_t i = 1; i < 12; i++) {
340 fHistTrialsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
341 fHistEventsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
343 fHistTrials->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
344 fHistXsection->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
345 fHistEvents->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
349 fHistPtHard->GetXaxis()->SetTitle(
"p_{T,hard} (GeV/c)");
354 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
360 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 200, 0, 100);
365 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
372 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
394 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
427 TObjArray* triggerClasses = InputEvent()->GetFiredTriggerClasses().Tokenize(
" ");
428 TIter next(triggerClasses);
429 TObjString* triggerClass = 0;
430 while ((triggerClass = static_cast<TObjString*>(next()))) {
433 delete triggerClasses;
490 AliError(Form(
"%s:Container %d not found",GetName(),c));
507 AliError(Form(
"%s:Container %d not found",GetName(),c));
523 TString
file(currFile);
527 if (file.Contains(
".zip#")) {
528 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
529 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
530 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
531 file.Replace(pos+1,pos2-pos1,
"");
534 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
536 AliDebug(1,Form(
"File name: %s",file.Data()));
539 TString strPthard(file);
541 strPthard.Remove(strPthard.Last(
'/'));
542 strPthard.Remove(strPthard.Last(
'/'));
543 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
544 strPthard.Remove(0,strPthard.Last(
'/')+1);
545 if (strPthard.IsDec())
546 pthard = strPthard.Atoi();
548 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
551 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
555 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
561 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
566 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
571 fXsec = ((TProfile*)list->FindObject(
"h1Xsec"))->GetBinContent(1);
572 fTrials = ((TH1F*)list->FindObject(
"h1Trials"))->GetBinContent(1);
576 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
582 Double_t xsection = 0;
583 xtree->SetBranchAddress(
"xsection",&xsection);
584 xtree->SetBranchAddress(
"ntrials",&ntrials);
601 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
603 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
607 Float_t xsection = 0;
611 TFile *curfile = tree->GetCurrentFile();
613 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
617 TChain *chain =
dynamic_cast<TChain*
>(tree);
618 if (chain) tree = chain->GetTree();
620 Int_t
nevents = tree->GetEntriesFast();
625 if ((pthardbin < 0) || (pthardbin > 10)) pthardbin = 0;
640 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
645 fGeom = AliEMCALGeometry::GetInstance();
647 AliError(Form(
"%s: Can not create geometry", GetName()));
659 AliWarning(
"Could not set event plane limits because EMCal geometry was not loaded!");
672 AliError(Form(
"%s: Could not retrieve first track branch!", GetName()));
686 AliError(Form(
"%s: Could not retrieve first cluster branch!", GetName()));
694 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
702 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
728 AliESDEvent *esd =
dynamic_cast<AliESDEvent*
>(InputEvent());
730 const AliESDRun *run = esd->GetESDRun();
731 TString beamType = run->GetBeamType();
732 if (beamType ==
"p-p")
734 else if (beamType ==
"A-A")
736 else if (beamType ==
"p-A")
741 Int_t runNumber = InputEvent()->GetRunNumber();
742 if ((runNumber >= 136851 && runNumber <= 139517) ||
743 (runNumber >= 166529 && runNumber <= 170593)) {
745 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
746 (runNumber >= 195344 && runNumber <= 196608)) {
769 AliEmcalTriggerPatchInfo *patch;
770 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
772 if (patch->IsGammaHigh()) nG1++;
773 if (patch->IsGammaLow()) nG2++;
774 if (patch->IsJetHigh()) nJ1++;
775 if (patch->IsJetLow()) nJ2++;
776 if (patch->IsLevel0()) nL0++;
779 AliDebug(2,
"Patch summary: ");
780 AliDebug(2, Form(
"Number of patches: %d", nPatch));
781 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
782 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
785 if (nL0>0) SETBIT(triggers,
kL0);
786 if (nG1>0) SETBIT(triggers,
kG1);
787 if (nG2>0) SETBIT(triggers,
kG2);
788 if (nJ1>0) SETBIT(triggers,
kJ1);
789 if (nJ2>0) SETBIT(triggers,
kJ2);
798 AliWarning(Form(
"%s: Requesting undefined trigger type!", GetName()));
815 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
817 res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
819 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
821 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
832 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
834 fired = eev->GetFiredTriggerClasses();
836 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
838 fired = aev->GetFiredTriggerClasses();
841 if (!fired.Contains(
"-B-")) {
852 for (Int_t i=0;i<arr->GetEntriesFast();++i) {
853 TObject *obj = arr->At(i);
858 TString objStr = obj->GetName();
860 (objStr.Contains(
"J1") || objStr.Contains(
"J2") || objStr.Contains(
"G1") || objStr.Contains(
"G2"))) {
863 TString trigType1 =
"J1";
864 TString trigType2 =
"J2";
865 if(objStr.Contains(
"G")) {
869 if(objStr.Contains(trigType2) && fired.Contains(trigType2.Data())) {
873 else if(objStr.Contains(trigType1) && fired.Contains(trigType1.Data()) && !fired.Contains(trigType2.Data())) {
881 if (fired.Contains(obj->GetName())) {
902 if (fCent<fMinCent || fCent>
fMaxCent) {
938 if (vz<fMinVz || vz>
fMaxVz) {
945 Bool_t trackInEmcalOk = kFALSE;
947 for (Int_t i = 0; i < ntracks; i++) {
952 Double_t phiMin =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
953 Double_t phiMax =
fGeom->GetArm1PhiMax() * TMath::DegToRad();
954 Int_t runNumber = InputEvent()->GetRunNumber();
955 if (runNumber>=177295 && runNumber<=197470) {
957 phiMax = TMath::Pi();
960 if (track->Eta() <
fGeom->GetArm1EtaMin() || track->Eta() >
fGeom->GetArm1EtaMax() || track->Phi() < phiMin || track->Phi() > phiMax)
963 trackInEmcalOk = kTRUE;
967 if (!trackInEmcalOk) {
974 Int_t nTracksAcc = 0;
976 for (Int_t i = 0; i < ntracks; i++) {
1013 TClonesArray *arr = 0;
1014 TString sname(name);
1015 if (!sname.IsNull()) {
1016 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
1018 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
1028 TString objname(arr->GetClass()->GetName());
1029 TClass cls(objname);
1030 if (!cls.InheritsFrom(clname)) {
1031 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
1032 GetName(), cls.GetName(), name, clname));
1048 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1057 AliCentrality *aliCent = InputEvent()->GetCentrality();
1066 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1076 AliWarning(Form(
"%s: fCentBin too large: cent = %f fCentBin = %d. Assuming 99", GetName(),
fCent,
fCentBin));
1081 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1084 AliEventplane *aliEP = InputEvent()->GetEventplane();
1086 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1087 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1088 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1090 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1100 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
1103 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
1106 for (UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
1107 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
1117 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
1118 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
1140 TString tmp = TString(n);
1141 if (tmp.IsNull())
return 0;
1159 TString tmp = TString(n);
1160 if (tmp.IsNull())
return 0;
1216 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1230 AliError(Form(
"%s:Cluster container %d not found",GetName(),i));
1244 AliError(Form(
"%s: Particle container %d not found",GetName(),c));
1260 AliError(Form(
"%s: Cluster container %d not found",GetName(),c));
1275 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1288 AliError(Form(
"%s: Cluster container %d not found",GetName(),i));
1305 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
1313 AliEmcalTriggerPatchInfo *patch(NULL), *selected(NULL);
1314 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
1317 if (patch->IsMainTrigger()) {
1318 if(doSimpleOffline){
1319 if(patch->IsOfflineSimple()){
1323 if(patch->IsLevel0()) selected = patch;
1326 if(patch->IsJetHighSimple() || patch->IsJetLowSimple()){
1327 if(!selected) selected = patch;
1328 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1332 if(patch->IsGammaHighSimple() || patch->IsGammaLowSimple()){
1333 if(!selected) selected = patch;
1334 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1338 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1344 if(patch->IsLevel0()) selected = patch;
1347 if(patch->IsJetHigh() || patch->IsJetLow()){
1348 if(!selected) selected = patch;
1349 else if (patch->GetADCAmp() > selected->GetADCAmp())
1354 if(patch->IsGammaHigh() || patch->IsGammaLow()){
1355 if(!selected) selected = patch;
1356 else if (patch->GetADCAmp() > selected->GetADCAmp())
1361 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1367 if (doSimpleOffline && patch->IsOfflineSimple()) {
1368 if(!selected) selected = patch;
1369 else if (patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp())
1372 else if (!doSimpleOffline && !patch->IsOfflineSimple()) {
1373 if(!selected) selected = patch;
1374 else if (patch->GetADCAmp() > selected->GetADCAmp())
1387 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1388 InputEvent()->AddObject(obj);
1390 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1397 axis->SetBinLabel(1,
"NullObject");
1398 axis->SetBinLabel(2,
"Pt");
1399 axis->SetBinLabel(3,
"Acceptance");
1400 axis->SetBinLabel(4,
"BitMap");
1401 axis->SetBinLabel(5,
"Bit4");
1402 axis->SetBinLabel(6,
"Bit5");
1403 axis->SetBinLabel(7,
"Bit6");
1404 axis->SetBinLabel(8,
"NotHybridTrack");
1405 axis->SetBinLabel(9,
"MCFlag");
1406 axis->SetBinLabel(10,
"MCGenerator");
1407 axis->SetBinLabel(11,
"ChargeCut");
1408 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1409 axis->SetBinLabel(13,
"MinMCLabelAccept");
1410 axis->SetBinLabel(14,
"IsEMCal");
1411 axis->SetBinLabel(15,
"Time");
1412 axis->SetBinLabel(16,
"Energy");
1413 axis->SetBinLabel(17,
"Bit16");
1414 axis->SetBinLabel(18,
"Bit17");
1415 axis->SetBinLabel(19,
"Area");
1416 axis->SetBinLabel(20,
"AreaEmc");
1417 axis->SetBinLabel(21,
"ZLeadingCh");
1418 axis->SetBinLabel(22,
"ZLeadingEmc");
1419 axis->SetBinLabel(23,
"NEF");
1420 axis->SetBinLabel(24,
"MinLeadPt");
1421 axis->SetBinLabel(25,
"MaxTrackPt");
1422 axis->SetBinLabel(26,
"MaxClusterPt");
1423 axis->SetBinLabel(27,
"Flavour");
1424 axis->SetBinLabel(28,
"TagStatus");
1425 axis->SetBinLabel(29,
"MinNConstituents");
1426 axis->SetBinLabel(30,
"Bit29");
1427 axis->SetBinLabel(31,
"Bit30");
1428 axis->SetBinLabel(32,
"Bit31");
1436 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1437 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1438 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1447 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1448 Double_t z = (vect1 * vect2) / (vect2 * vect2);
Bool_t AcceptCluster(AliVCluster *vp)
TObjArray fClusterCollArray
void SetParticlePtCut(Double_t cut)
TH1 * fHistTrials
x section from pythia header
Bool_t AcceptTrack(AliVParticle *track, Int_t c=0) const
Bool_t HasTriggerType(TriggerType triggersel)
Int_t fNTrials
event pt hard bin
AliEmcalTriggerPatchInfo * GetMainTriggerPatch(TriggerCategory triggersel=kTriggerLevel1Jet, Bool_t doOfflinSimple=kFALSE)
Double_t fPtHard
event Pythia header
void SetTrackPtCut(Double_t cut, Int_t c=0)
Double_t fEPV0
event centrality bin
Bool_t fGeneralHistograms
virtual void SetArray(AliVEvent *event)
Bool_t AcceptCluster(AliVCluster *clus, Int_t c=0) const
void AddObjectToEvent(TObject *obj)
Int_t fCentBin
event centrality
TH1 * fHistEventsAfterSel
total number of trials per pt hard bin after selection
Bool_t AcceptParticle(AliVParticle *vp)
Double_t fMinPtTrackInEmcal
void SetArrayName(const char *n)
TH1 * fHistEventPlane
z vertex position
TList * fOutput
x-section from pythia header
TH1 * fHistEvents
trials from pyxsec.root
void SetClusPtCut(Double_t cut, Int_t c=0)
AliClusterContainer * AddClusterContainer(const char *n)
Double_t fEPV0C
event plane V0A
TH1 * fHistCentrality
pt hard distribution
TObjArray fParticleCollArray
void SetTrackEtaLimits(Double_t min, Double_t max, Int_t c=0)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
TProfile * fHistXsectionAfterSel
total number of events per pt hard bin after selection
EMCalTriggerMode_t fEMCalTriggerMode
virtual Bool_t FillHistograms()
AliVCluster * GetAcceptCluster(Int_t i)
Int_t GetNParticles(Int_t i=0) const
TClonesArray * fCaloClusters
tracks
ClassImp(AliAnalysisTaskEmcal) AliAnalysisTaskEmcal
void SetArray(AliVEvent *event)
TH1 * fHistTriggerClasses
book keep reasons for rejecting event
AliEMCALGeometry * fGeom
whether it's an ESD analysis
TString fCaloTriggerPatchInfoName
TString fCaloTriggersName
AliVParticle * GetAcceptParticle(Int_t i)
AliGenPythiaEventHeader * fPythiaHeader
event beam type
void SetTrackPhiLimits(Double_t min, Double_t max, Int_t c=0)
AliParticleContainer * AddParticleContainer(const char *n)
AliAnalysisUtils * fAliAnalysisUtils
AliClusterContainer * GetClusterContainer(Int_t i=0) const
TriggerType fTriggerTypeSel
virtual Bool_t FillGeneralHistograms()
TClonesArray * GetParticleArray(Int_t i=0) const
BeamType fBeamType
event vertex number of contributors
Double_t fCent
trigger patch info array
TClonesArray * GetArray() const
Int_t GetNClusters(Int_t i=0) const
Int_t fNVertCont
event vertex
static Double_t GetParallelFraction(AliVParticle *part1, AliVParticle *part2)
virtual Bool_t RetrieveEventObjects()
TProfile * fHistXsection
total number of events per pt hard bin
Bool_t PythiaInfoFromFile(const char *currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard)
void UserExec(Option_t *option)
AliVCaloCells * fCaloCells
clusters
const TString & GetArrayName() const
TClonesArray * GetArrayFromEvent(const char *name, const char *clname=0)
Double_t fEventPlaneVsEmcal
virtual Bool_t IsEventSelected()
TH1 * fHistPtHard
x section from pyxsec.root
void SetParticleEtaLimits(Double_t min, Double_t max)
Int_t fPtHardBin
event pt hard
TClonesArray * fTracks
emcal geometry
TH1 * fHistTrialsAfterSel
incoming and selected events
Bool_t fIsEsd
vertex selection (optional)
Double_t fVertex[3]
event plane V0C
TH1 * fHistEventRejection
event plane distribution
TClonesArray * fTriggerPatchInfo
calo triggers
TClonesArray * GetClusterArray(Int_t i=0) const
Double_t fEPV0A
event plane V0
void SetParticlePhiLimits(Double_t min, Double_t max, Double_t offset=0.)
void SetClusPtCut(Double_t cut)
AliVCaloTrigger * fCaloTriggers
cells
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
TH1 * fHistZVertex
event centrality distribution
Int_t GetNEntries() const
void SetClusTimeCut(Double_t min, Double_t max, Int_t c=0)
Float_t fXsection
event trials
TH1 * fHistEventCount
output list
void SetClusTimeCut(Double_t min, Double_t max)
AliVParticle * GetAcceptParticleFromArray(Int_t p, Int_t c=0) const
AliVCluster * GetAcceptClusterFromArray(Int_t cl, Int_t c=0) const
virtual ~AliAnalysisTaskEmcal()