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"
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 fAliAnalysisUtils(0x0),
106 fHistTrialsAfterSel(0),
107 fHistEventsAfterSel(0),
108 fHistXsectionAfterSel(0),
116 fHistEventRejection(0)
124 fParticleCollArray.SetOwner(kTRUE);
125 fClusterCollArray.SetOwner(kTRUE);
130 AliAnalysisTaskSE(name),
132 fGeneralHistograms(kFALSE),
133 fInitialized(kFALSE),
137 fCaloTriggerPatchInfoName(),
144 fUseAliAnaUtils(kFALSE),
145 fRejectPileup(kFALSE),
146 fTklVsClusSPDCut(kFALSE),
147 fOffTrigger(AliVEvent::kAny),
149 fTriggerTypeSel(kND),
153 fMinPtTrackInEmcal(0),
154 fEventPlaneVsEmcal(-1),
155 fMinEventPlane(-1e6),
160 fSelectPtHardBin(-999),
164 fNeedEmcalGeom(kTRUE),
165 fParticleCollArray(),
168 fAliAnalysisUtils(0x0),
175 fTriggerPatchInfo(0),
190 fHistTrialsAfterSel(0),
191 fHistEventsAfterSel(0),
192 fHistXsectionAfterSel(0),
200 fHistEventRejection(0)
212 DefineOutput(1, TList::Class());
227 else AliError(Form(
"%s in SetClusPtCut(...): container %d not found",GetName(),c));
235 else AliError(Form(
"%s in SetClusTimeCut(...): container %d not found",GetName(),c));
243 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
253 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
261 else AliError(Form(
"%s in SetTrackPhiLimits(...): container %d not found",GetName(),c));
269 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
271 AliVEventHandler *evhand = mgr->GetInputEventHandler();
273 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
281 AliError(
"Event handler not found!");
285 AliError(
"Analysis manager not found!");
317 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 11, 0, 11);
318 fHistTrials->GetXaxis()->SetTitle(
"p_{T} hard bin");
322 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 11, 0, 11);
323 fHistEvents->GetXaxis()->SetTitle(
"p_{T} hard bin");
327 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 11, 0, 11);
332 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
333 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
335 for (Int_t i = 1; i < 12; i++) {
336 fHistTrialsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
337 fHistEventsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
339 fHistTrials->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
340 fHistXsection->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
341 fHistEvents->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
345 fHistPtHard->GetXaxis()->SetTitle(
"p_{T,hard} (GeV/c)");
350 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
356 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 200, 0, 100);
361 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
368 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
467 AliError(Form(
"%s:Container %d not found",GetName(),c));
484 AliError(Form(
"%s:Container %d not found",GetName(),c));
500 TString
file(currFile);
504 if (file.Contains(
".zip#")) {
505 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
506 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
507 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
508 file.Replace(pos+1,pos2-pos1,
"");
511 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
513 AliDebug(1,Form(
"File name: %s",file.Data()));
516 TString strPthard(file);
518 strPthard.Remove(strPthard.Last(
'/'));
519 strPthard.Remove(strPthard.Last(
'/'));
520 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
521 strPthard.Remove(0,strPthard.Last(
'/')+1);
522 if (strPthard.IsDec())
523 pthard = strPthard.Atoi();
525 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
528 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
532 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
538 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
543 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
548 fXsec = ((TProfile*)list->FindObject(
"h1Xsec"))->GetBinContent(1);
549 fTrials = ((TH1F*)list->FindObject(
"h1Trials"))->GetBinContent(1);
553 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
559 Double_t xsection = 0;
560 xtree->SetBranchAddress(
"xsection",&xsection);
561 xtree->SetBranchAddress(
"ntrials",&ntrials);
578 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
580 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
584 Float_t xsection = 0;
588 TFile *curfile = tree->GetCurrentFile();
590 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
594 TChain *chain =
dynamic_cast<TChain*
>(tree);
595 if (chain) tree = chain->GetTree();
597 Int_t
nevents = tree->GetEntriesFast();
602 if ((pthardbin < 0) || (pthardbin > 10)) pthardbin = 0;
617 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
622 fGeom = AliEMCALGeometry::GetInstance();
624 AliError(Form(
"%s: Can not create geometry", GetName()));
636 AliWarning(
"Could not set event plane limits because EMCal geometry was not loaded!");
649 AliError(Form(
"%s: Could not retrieve first track branch!", GetName()));
663 AliError(Form(
"%s: Could not retrieve first cluster branch!", GetName()));
671 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
679 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
705 AliESDEvent *esd =
dynamic_cast<AliESDEvent*
>(InputEvent());
707 const AliESDRun *run = esd->GetESDRun();
708 TString beamType = run->GetBeamType();
709 if (beamType ==
"p-p")
711 else if (beamType ==
"A-A")
713 else if (beamType ==
"p-A")
718 Int_t runNumber = InputEvent()->GetRunNumber();
719 if ((runNumber >= 136851 && runNumber <= 139517) ||
720 (runNumber >= 166529 && runNumber <= 170593)) {
722 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
723 (runNumber >= 195344 && runNumber <= 196608)) {
747 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
756 AliDebug(2,
"Patch summary: ");
757 AliDebug(2, Form(
"Number of patches: %d", nPatch));
758 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
759 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
762 if (nL0>0) SETBIT(triggers,
kL0);
763 if (nG1>0) SETBIT(triggers,
kG1);
764 if (nG2>0) SETBIT(triggers,
kG2);
765 if (nJ1>0) SETBIT(triggers,
kJ1);
766 if (nJ2>0) SETBIT(triggers,
kJ2);
775 AliWarning(Form(
"%s: Requesting undefined trigger type!", GetName()));
792 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
794 res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
796 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
798 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
809 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
811 fired = eev->GetFiredTriggerClasses();
813 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
815 fired = aev->GetFiredTriggerClasses();
818 if (!fired.Contains(
"-B-")) {
829 for (Int_t i=0;i<arr->GetEntriesFast();++i) {
830 TObject *obj = arr->At(i);
835 TString objStr = obj->GetName();
836 if(objStr.Contains(
"J1") || objStr.Contains(
"J2") || objStr.Contains(
"G1") || objStr.Contains(
"G2")) {
837 TString trigType1 =
"J1";
838 TString trigType2 =
"J2";
839 if(objStr.Contains(
"G")) {
843 if(objStr.Contains(trigType2) && fired.Contains(trigType2.Data())) {
847 else if(objStr.Contains(trigType1) && fired.Contains(trigType1.Data()) && !fired.Contains(trigType2.Data())) {
852 if (fired.Contains(obj->GetName())) {
873 if (fCent<fMinCent || fCent>
fMaxCent) {
909 if (vz<fMinVz || vz>
fMaxVz) {
916 Bool_t trackInEmcalOk = kFALSE;
918 for (Int_t i = 0; i < ntracks; i++) {
923 Double_t phiMin =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
924 Double_t phiMax =
fGeom->GetArm1PhiMax() * TMath::DegToRad();
925 Int_t runNumber = InputEvent()->GetRunNumber();
926 if (runNumber>=177295 && runNumber<=197470) {
928 phiMax = TMath::Pi();
931 if (track->Eta() <
fGeom->GetArm1EtaMin() || track->Eta() >
fGeom->GetArm1EtaMax() || track->Phi() < phiMin || track->Phi() > phiMax)
934 trackInEmcalOk = kTRUE;
938 if (!trackInEmcalOk) {
945 Int_t nTracksAcc = 0;
947 for (Int_t i = 0; i < ntracks; i++) {
984 TClonesArray *arr = 0;
986 if (!sname.IsNull()) {
987 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
989 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
999 TString objname(arr->GetClass()->GetName());
1000 TClass cls(objname);
1001 if (!cls.InheritsFrom(clname)) {
1002 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
1003 GetName(), cls.GetName(), name, clname));
1019 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1028 AliCentrality *aliCent = InputEvent()->GetCentrality();
1037 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1047 AliWarning(Form(
"%s: fCentBin too large: cent = %f fCentBin = %d. Assuming 99", GetName(),
fCent,
fCentBin));
1052 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1055 AliEventplane *aliEP = InputEvent()->GetEventplane();
1057 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1058 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1059 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1061 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1071 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
1074 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
1077 for (UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
1078 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
1088 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
1089 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
1111 TString tmp = TString(n);
1112 if (tmp.IsNull())
return 0;
1130 TString tmp = TString(n);
1131 if (tmp.IsNull())
return 0;
1187 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1201 AliError(Form(
"%s:Cluster container %d not found",GetName(),i));
1215 AliError(Form(
"%s: Particle container %d not found",GetName(),c));
1231 AliError(Form(
"%s: Cluster container %d not found",GetName(),c));
1246 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1259 AliError(Form(
"%s: Cluster container %d not found",GetName(),i));
1276 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
1285 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
1288 if (patch->IsMainTrigger()) {
1289 if(doSimpleOffline){
1290 if(patch->IsOfflineSimple()){
1294 if(patch->IsLevel0()) selected = patch;
1297 if(patch->IsJetHighSimple() || patch->IsJetLowSimple()){
1298 if(!selected) selected = patch;
1299 else if(patch->GetADCOfflineAmp() > selected->
GetADCOfflineAmp()) selected = patch;
1303 if(patch->IsGammaHighSimple() || patch->IsGammaLowSimple()){
1304 if(!selected) selected = patch;
1305 else if(patch->GetADCOfflineAmp() > selected->
GetADCOfflineAmp()) selected = patch;
1309 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1315 if(patch->IsLevel0()) selected = patch;
1318 if(patch->IsJetHigh() || patch->IsJetLow()){
1319 if(!selected) selected = patch;
1320 else if (patch->GetADCAmp() > selected->
GetADCAmp())
1325 if(patch->IsGammaHigh() || patch->IsGammaLow()){
1326 if(!selected) selected = patch;
1327 else if (patch->GetADCAmp() > selected->
GetADCAmp())
1332 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1338 if (doSimpleOffline && patch->IsOfflineSimple()) {
1339 if(!selected) selected = patch;
1343 else if (!doSimpleOffline && !patch->IsOfflineSimple()) {
1344 if(!selected) selected = patch;
1345 else if (patch->GetADCAmp() > selected->
GetADCAmp())
1358 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1359 InputEvent()->AddObject(obj);
1361 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1368 axis->SetBinLabel(1,
"NullObject");
1369 axis->SetBinLabel(2,
"Pt");
1370 axis->SetBinLabel(3,
"Acceptance");
1371 axis->SetBinLabel(4,
"BitMap");
1372 axis->SetBinLabel(5,
"Bit4");
1373 axis->SetBinLabel(6,
"Bit5");
1374 axis->SetBinLabel(7,
"Bit6");
1375 axis->SetBinLabel(8,
"NotHybridTrack");
1376 axis->SetBinLabel(9,
"MCFlag");
1377 axis->SetBinLabel(10,
"MCGenerator");
1378 axis->SetBinLabel(11,
"ChargeCut");
1379 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1380 axis->SetBinLabel(13,
"MinMCLabelAccept");
1381 axis->SetBinLabel(14,
"IsEMCal");
1382 axis->SetBinLabel(15,
"Time");
1383 axis->SetBinLabel(16,
"Energy");
1384 axis->SetBinLabel(17,
"Bit16");
1385 axis->SetBinLabel(18,
"Bit17");
1386 axis->SetBinLabel(19,
"Area");
1387 axis->SetBinLabel(20,
"AreaEmc");
1388 axis->SetBinLabel(21,
"ZLeadingCh");
1389 axis->SetBinLabel(22,
"ZLeadingEmc");
1390 axis->SetBinLabel(23,
"NEF");
1391 axis->SetBinLabel(24,
"MinLeadPt");
1392 axis->SetBinLabel(25,
"MaxTrackPt");
1393 axis->SetBinLabel(26,
"MaxClusterPt");
1394 axis->SetBinLabel(27,
"Flavour");
1395 axis->SetBinLabel(28,
"TagStatus");
1396 axis->SetBinLabel(29,
"MinNConstituents");
1397 axis->SetBinLabel(30,
"Bit29");
1398 axis->SetBinLabel(31,
"Bit30");
1399 axis->SetBinLabel(32,
"Bit31");
1407 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1408 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1409 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1418 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1419 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 IsGammaLow() const
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
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)
Main data structure storing all relevant information of EMCAL/DCAL trigger patches.
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
Bool_t IsGammaHigh() const
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
Int_t GetADCOfflineAmp() const
TH1 * fHistEventRejection
event plane distribution
TClonesArray * fTriggerPatchInfo
calo triggers
TClonesArray * GetClusterArray(Int_t i=0) const
Double_t fEPV0A
event plane V0
Class to make array of trigger patch objects in AOD/ESD events.
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()