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"
42 #include "AliMultSelection.h"
52 fGeneralHistograms(kFALSE),
57 fCaloTriggerPatchInfoName(),
64 fUseAliAnaUtils(kFALSE),
65 fRejectPileup(kFALSE),
66 fTklVsClusSPDCut(kFALSE),
67 fOffTrigger(AliVEvent::kAny),
73 fMinPtTrackInEmcal(0),
74 fEventPlaneVsEmcal(-1),
80 fSelectPtHardBin(-999),
84 fNeedEmcalGeom(kTRUE),
88 fEMCalTriggerMode(kOverlapWithLowThreshold),
89 fUseNewCentralityEstimation(kFALSE),
90 fAliAnalysisUtils(0x0),
112 fHistTrialsAfterSel(0),
113 fHistEventsAfterSel(0),
114 fHistXsectionAfterSel(0),
122 fHistEventRejection(0),
123 fHistTriggerClasses(0)
131 fParticleCollArray.SetOwner(kTRUE);
132 fClusterCollArray.SetOwner(kTRUE);
137 AliAnalysisTaskSE(name),
139 fGeneralHistograms(kFALSE),
140 fInitialized(kFALSE),
144 fCaloTriggerPatchInfoName(),
151 fUseAliAnaUtils(kFALSE),
152 fRejectPileup(kFALSE),
153 fTklVsClusSPDCut(kFALSE),
154 fOffTrigger(AliVEvent::kAny),
156 fTriggerTypeSel(kND),
160 fMinPtTrackInEmcal(0),
161 fEventPlaneVsEmcal(-1),
162 fMinEventPlane(-1e6),
167 fSelectPtHardBin(-999),
171 fNeedEmcalGeom(kTRUE),
172 fParticleCollArray(),
175 fEMCalTriggerMode(kOverlapWithLowThreshold),
176 fUseNewCentralityEstimation(kFALSE),
177 fAliAnalysisUtils(0x0),
184 fTriggerPatchInfo(0),
199 fHistTrialsAfterSel(0),
200 fHistEventsAfterSel(0),
201 fHistXsectionAfterSel(0),
209 fHistEventRejection(0),
210 fHistTriggerClasses(0)
222 DefineOutput(1, TList::Class());
237 else AliError(Form(
"%s in SetClusPtCut(...): container %d not found",GetName(),c));
245 else AliError(Form(
"%s in SetClusTimeCut(...): container %d not found",GetName(),c));
253 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
263 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
271 else AliError(Form(
"%s in SetTrackPhiLimits(...): container %d not found",GetName(),c));
279 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
281 AliVEventHandler *evhand = mgr->GetInputEventHandler();
283 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
291 AliError(
"Event handler not found!");
295 AliError(
"Analysis manager not found!");
327 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 11, 0, 11);
328 fHistTrials->GetXaxis()->SetTitle(
"p_{T} hard bin");
332 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 11, 0, 11);
333 fHistEvents->GetXaxis()->SetTitle(
"p_{T} hard bin");
337 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 11, 0, 11);
342 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
343 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
345 for (Int_t i = 1; i < 12; i++) {
346 fHistTrialsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
347 fHistEventsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
349 fHistTrials->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
350 fHistXsection->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
351 fHistEvents->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
355 fHistPtHard->GetXaxis()->SetTitle(
"p_{T,hard} (GeV/c)");
360 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
366 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 200, 0, 100);
371 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
378 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
400 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
433 TObjArray* triggerClasses = InputEvent()->GetFiredTriggerClasses().Tokenize(
" ");
434 TIter next(triggerClasses);
435 TObjString* triggerClass = 0;
436 while ((triggerClass = static_cast<TObjString*>(next()))) {
439 delete triggerClasses;
496 AliError(Form(
"%s:Container %d not found",GetName(),c));
513 AliError(Form(
"%s:Container %d not found",GetName(),c));
529 TString
file(currFile);
533 if (file.Contains(
".zip#")) {
534 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
535 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
536 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
537 file.Replace(pos+1,pos2-pos1,
"");
540 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
542 AliDebug(1,Form(
"File name: %s",file.Data()));
545 TString strPthard(file);
547 strPthard.Remove(strPthard.Last(
'/'));
548 strPthard.Remove(strPthard.Last(
'/'));
549 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
550 strPthard.Remove(0,strPthard.Last(
'/')+1);
551 if (strPthard.IsDec())
552 pthard = strPthard.Atoi();
554 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
557 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
561 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
567 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
572 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
577 fXsec = ((TProfile*)list->FindObject(
"h1Xsec"))->GetBinContent(1);
578 fTrials = ((TH1F*)list->FindObject(
"h1Trials"))->GetBinContent(1);
582 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
588 Double_t xsection = 0;
589 xtree->SetBranchAddress(
"xsection",&xsection);
590 xtree->SetBranchAddress(
"ntrials",&ntrials);
607 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
609 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
613 Float_t xsection = 0;
617 TFile *curfile = tree->GetCurrentFile();
619 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
623 TChain *chain =
dynamic_cast<TChain*
>(tree);
624 if (chain) tree = chain->GetTree();
626 Int_t
nevents = tree->GetEntriesFast();
631 if ((pthardbin < 0) || (pthardbin > 10)) pthardbin = 0;
646 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
651 fGeom = AliEMCALGeometry::GetInstance();
653 AliError(Form(
"%s: Can not create geometry", GetName()));
665 AliWarning(
"Could not set event plane limits because EMCal geometry was not loaded!");
678 AliError(Form(
"%s: Could not retrieve first track branch!", GetName()));
692 AliError(Form(
"%s: Could not retrieve first cluster branch!", GetName()));
700 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
708 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
734 AliESDEvent *esd =
dynamic_cast<AliESDEvent*
>(InputEvent());
736 const AliESDRun *run = esd->GetESDRun();
737 TString beamType = run->GetBeamType();
738 if (beamType ==
"p-p")
740 else if (beamType ==
"A-A")
742 else if (beamType ==
"p-A")
747 Int_t runNumber = InputEvent()->GetRunNumber();
748 if ((runNumber >= 136851 && runNumber <= 139517) ||
749 (runNumber >= 166529 && runNumber <= 170593)) {
751 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
752 (runNumber >= 195344 && runNumber <= 196608)) {
775 AliEmcalTriggerPatchInfo *patch;
776 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
778 if (patch->IsGammaHigh()) nG1++;
779 if (patch->IsGammaLow()) nG2++;
780 if (patch->IsJetHigh()) nJ1++;
781 if (patch->IsJetLow()) nJ2++;
782 if (patch->IsLevel0()) nL0++;
785 AliDebug(2,
"Patch summary: ");
786 AliDebug(2, Form(
"Number of patches: %d", nPatch));
787 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
788 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
791 if (nL0>0) SETBIT(triggers,
kL0);
792 if (nG1>0) SETBIT(triggers,
kG1);
793 if (nG2>0) SETBIT(triggers,
kG2);
794 if (nJ1>0) SETBIT(triggers,
kJ1);
795 if (nJ2>0) SETBIT(triggers,
kJ2);
804 AliWarning(Form(
"%s: Requesting undefined trigger type!", GetName()));
821 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
823 res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
825 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
827 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
838 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
840 fired = eev->GetFiredTriggerClasses();
842 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
844 fired = aev->GetFiredTriggerClasses();
847 if (!fired.Contains(
"-B-")) {
858 for (Int_t i=0;i<arr->GetEntriesFast();++i) {
859 TObject *obj = arr->At(i);
864 TString objStr = obj->GetName();
866 (objStr.Contains(
"J1") || objStr.Contains(
"J2") || objStr.Contains(
"G1") || objStr.Contains(
"G2"))) {
869 TString trigType1 =
"J1";
870 TString trigType2 =
"J2";
871 if(objStr.Contains(
"G")) {
875 if(objStr.Contains(trigType2) && fired.Contains(trigType2.Data())) {
879 else if(objStr.Contains(trigType1) && fired.Contains(trigType1.Data()) && !fired.Contains(trigType2.Data())) {
887 if (fired.Contains(obj->GetName())) {
908 if (fCent<fMinCent || fCent>
fMaxCent) {
944 if (vz<fMinVz || vz>
fMaxVz) {
951 Bool_t trackInEmcalOk = kFALSE;
953 for (Int_t i = 0; i < ntracks; i++) {
958 Double_t phiMin =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
959 Double_t phiMax =
fGeom->GetArm1PhiMax() * TMath::DegToRad();
960 Int_t runNumber = InputEvent()->GetRunNumber();
961 if (runNumber>=177295 && runNumber<=197470) {
963 phiMax = TMath::Pi();
966 if (track->Eta() <
fGeom->GetArm1EtaMin() || track->Eta() >
fGeom->GetArm1EtaMax() || track->Phi() < phiMin || track->Phi() > phiMax)
969 trackInEmcalOk = kTRUE;
973 if (!trackInEmcalOk) {
980 Int_t nTracksAcc = 0;
982 for (Int_t i = 0; i < ntracks; i++) {
1019 TClonesArray *arr = 0;
1020 TString sname(name);
1021 if (!sname.IsNull()) {
1022 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
1024 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
1034 TString objname(arr->GetClass()->GetName());
1035 TClass cls(objname);
1036 if (!cls.InheritsFrom(clname)) {
1037 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
1038 GetName(), cls.GetName(), name, clname));
1054 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1064 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
1065 if (MultSelection) {
1066 fCent = MultSelection->GetMultiplicityPercentile(
"V0M");
1069 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1073 AliCentrality *aliCent = InputEvent()->GetCentrality();
1078 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1088 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1097 else if (
fCent > 90) {
1102 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1115 AliWarning(Form(
"%s: fCentBin too large: cent = %f fCentBin = %d. Assuming 99", GetName(),
fCent,
fCentBin));
1120 AliEventplane *aliEP = InputEvent()->GetEventplane();
1122 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1123 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1124 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1126 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1133 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
1136 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
1139 for (UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
1140 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
1150 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
1151 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
1173 TString tmp = TString(n);
1174 if (tmp.IsNull())
return 0;
1192 TString tmp = TString(n);
1193 if (tmp.IsNull())
return 0;
1249 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1263 AliError(Form(
"%s:Cluster container %d not found",GetName(),i));
1277 AliError(Form(
"%s: Particle container %d not found",GetName(),c));
1293 AliError(Form(
"%s: Cluster container %d not found",GetName(),c));
1308 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1321 AliError(Form(
"%s: Cluster container %d not found",GetName(),i));
1338 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
1346 AliEmcalTriggerPatchInfo *patch(NULL), *selected(NULL);
1347 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
1350 if (patch->IsMainTrigger()) {
1351 if(doSimpleOffline){
1352 if(patch->IsOfflineSimple()){
1356 if(patch->IsLevel0()) selected = patch;
1359 if(patch->IsJetHighSimple() || patch->IsJetLowSimple()){
1360 if(!selected) selected = patch;
1361 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1365 if(patch->IsGammaHighSimple() || patch->IsGammaLowSimple()){
1366 if(!selected) selected = patch;
1367 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1371 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1377 if(patch->IsLevel0()) selected = patch;
1380 if(patch->IsJetHigh() || patch->IsJetLow()){
1381 if(!selected) selected = patch;
1382 else if (patch->GetADCAmp() > selected->GetADCAmp())
1387 if(patch->IsGammaHigh() || patch->IsGammaLow()){
1388 if(!selected) selected = patch;
1389 else if (patch->GetADCAmp() > selected->GetADCAmp())
1394 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1400 if (doSimpleOffline && patch->IsOfflineSimple()) {
1401 if(!selected) selected = patch;
1402 else if (patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp())
1405 else if (!doSimpleOffline && !patch->IsOfflineSimple()) {
1406 if(!selected) selected = patch;
1407 else if (patch->GetADCAmp() > selected->GetADCAmp())
1420 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1421 InputEvent()->AddObject(obj);
1423 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1430 axis->SetBinLabel(1,
"NullObject");
1431 axis->SetBinLabel(2,
"Pt");
1432 axis->SetBinLabel(3,
"Acceptance");
1433 axis->SetBinLabel(4,
"BitMap");
1434 axis->SetBinLabel(5,
"Bit4");
1435 axis->SetBinLabel(6,
"Bit5");
1436 axis->SetBinLabel(7,
"Bit6");
1437 axis->SetBinLabel(8,
"NotHybridTrack");
1438 axis->SetBinLabel(9,
"MCFlag");
1439 axis->SetBinLabel(10,
"MCGenerator");
1440 axis->SetBinLabel(11,
"ChargeCut");
1441 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1442 axis->SetBinLabel(13,
"MinMCLabelAccept");
1443 axis->SetBinLabel(14,
"IsEMCal");
1444 axis->SetBinLabel(15,
"Time");
1445 axis->SetBinLabel(16,
"Energy");
1446 axis->SetBinLabel(17,
"Bit16");
1447 axis->SetBinLabel(18,
"Bit17");
1448 axis->SetBinLabel(19,
"Area");
1449 axis->SetBinLabel(20,
"AreaEmc");
1450 axis->SetBinLabel(21,
"ZLeadingCh");
1451 axis->SetBinLabel(22,
"ZLeadingEmc");
1452 axis->SetBinLabel(23,
"NEF");
1453 axis->SetBinLabel(24,
"MinLeadPt");
1454 axis->SetBinLabel(25,
"MaxTrackPt");
1455 axis->SetBinLabel(26,
"MaxClusterPt");
1456 axis->SetBinLabel(27,
"Flavour");
1457 axis->SetBinLabel(28,
"TagStatus");
1458 axis->SetBinLabel(29,
"MinNConstituents");
1459 axis->SetBinLabel(30,
"Bit29");
1460 axis->SetBinLabel(31,
"Bit30");
1461 axis->SetBinLabel(32,
"Bit31");
1469 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1470 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1471 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1480 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1481 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
Bool_t fUseNewCentralityEstimation
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()
static Double_t fgkEMCalDCalPhiDivide