9 #include <TClonesArray.h>
20 #include "AliAODEvent.h"
21 #include "AliAnalysisManager.h"
22 #include "AliCentrality.h"
23 #include "AliEMCALGeometry.h"
24 #include "AliESDEvent.h"
26 #include "AliEventplane.h"
27 #include "AliInputEventHandler.h"
29 #include "AliMCParticle.h"
30 #include "AliVCluster.h"
31 #include "AliVEventHandler.h"
32 #include "AliVParticle.h"
33 #include "AliAODTrack.h"
34 #include "AliVCaloTrigger.h"
35 #include "AliGenPythiaEventHeader.h"
36 #include "AliAODMCHeader.h"
37 #include "AliMCEvent.h"
38 #include "AliAnalysisUtils.h"
39 #include "AliEMCALTriggerPatchInfo.h"
45 #include "AliMultSelection.h"
55 fGeneralHistograms(kFALSE),
60 fCaloTriggerPatchInfoName(),
67 fUseAliAnaUtils(kFALSE),
68 fRejectPileup(kFALSE),
69 fTklVsClusSPDCut(kFALSE),
70 fOffTrigger(AliVEvent::kAny),
76 fMinPtTrackInEmcal(0),
77 fEventPlaneVsEmcal(-1),
83 fSelectPtHardBin(-999),
87 fNeedEmcalGeom(kTRUE),
91 fEMCalTriggerMode(kOverlapWithLowThreshold),
92 fUseNewCentralityEstimation(kFALSE),
93 fGeneratePythiaInfoObject(kFALSE),
94 fAliAnalysisUtils(0x0),
101 fTriggerPatchInfo(0),
117 fHistTrialsAfterSel(0),
118 fHistEventsAfterSel(0),
119 fHistXsectionAfterSel(0),
127 fHistEventRejection(0),
128 fHistTriggerClasses(0)
136 fParticleCollArray.SetOwner(kTRUE);
137 fClusterCollArray.SetOwner(kTRUE);
142 AliAnalysisTaskSE(name),
144 fGeneralHistograms(kFALSE),
145 fInitialized(kFALSE),
149 fCaloTriggerPatchInfoName(),
156 fUseAliAnaUtils(kFALSE),
157 fRejectPileup(kFALSE),
158 fTklVsClusSPDCut(kFALSE),
159 fOffTrigger(AliVEvent::kAny),
161 fTriggerTypeSel(kND),
165 fMinPtTrackInEmcal(0),
166 fEventPlaneVsEmcal(-1),
167 fMinEventPlane(-1e6),
172 fSelectPtHardBin(-999),
176 fNeedEmcalGeom(kTRUE),
177 fParticleCollArray(),
180 fEMCalTriggerMode(kOverlapWithLowThreshold),
181 fUseNewCentralityEstimation(kFALSE),
182 fGeneratePythiaInfoObject(kFALSE),
183 fAliAnalysisUtils(0x0),
190 fTriggerPatchInfo(0),
206 fHistTrialsAfterSel(0),
207 fHistEventsAfterSel(0),
208 fHistXsectionAfterSel(0),
216 fHistEventRejection(0),
217 fHistTriggerClasses(0)
229 DefineOutput(1, TList::Class());
244 else AliError(Form(
"%s in SetClusPtCut(...): container %d not found",GetName(),c));
252 else AliError(Form(
"%s in SetClusTimeCut(...): container %d not found",GetName(),c));
260 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
270 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
278 else AliError(Form(
"%s in SetTrackPhiLimits(...): container %d not found",GetName(),c));
286 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
288 AliVEventHandler *evhand = mgr->GetInputEventHandler();
290 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
298 AliError(
"Event handler not found!");
302 AliError(
"Analysis manager not found!");
334 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 11, 0, 11);
335 fHistTrials->GetXaxis()->SetTitle(
"p_{T} hard bin");
339 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 11, 0, 11);
340 fHistEvents->GetXaxis()->SetTitle(
"p_{T} hard bin");
344 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 11, 0, 11);
349 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
350 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
352 for (Int_t i = 1; i < 12; i++) {
353 fHistTrialsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
354 fHistEventsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
356 fHistTrials->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
357 fHistXsection->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
358 fHistEvents->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
362 fHistPtHard->GetXaxis()->SetTitle(
"p_{T,hard} (GeV/c)");
367 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
373 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 200, 0, 100);
378 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
385 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
407 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
440 TObjArray* triggerClasses = InputEvent()->GetFiredTriggerClasses().Tokenize(
" ");
441 TIter next(triggerClasses);
442 TObjString* triggerClass = 0;
443 while ((triggerClass = static_cast<TObjString*>(next()))) {
446 delete triggerClasses;
498 AliWarning(
"AliAnalysisTaskEmcal::AcceptCluster method is deprecated. Please use GetCusterContainer(c)->AcceptCluster(clus).");
500 if (!clus)
return kFALSE;
504 AliError(Form(
"%s:Container %d not found",GetName(),c));
516 AliWarning(
"AliAnalysisTaskEmcal::AcceptTrack method is deprecated. Please use GetParticleContainer(c)->AcceptParticle(clus).");
518 if (!track)
return kFALSE;
522 AliError(Form(
"%s:Container %d not found",GetName(),c));
538 TString
file(currFile);
542 if (file.Contains(
".zip#")) {
543 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
544 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
545 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
546 file.Replace(pos+1,pos2-pos1,
"");
549 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
551 AliDebug(1,Form(
"File name: %s",file.Data()));
554 TString strPthard(file);
556 strPthard.Remove(strPthard.Last(
'/'));
557 strPthard.Remove(strPthard.Last(
'/'));
558 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
559 strPthard.Remove(0,strPthard.Last(
'/')+1);
560 if (strPthard.IsDec())
561 pthard = strPthard.Atoi();
563 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
566 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
570 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
576 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
581 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
586 fXsec = ((TProfile*)list->FindObject(
"h1Xsec"))->GetBinContent(1);
587 fTrials = ((TH1F*)list->FindObject(
"h1Trials"))->GetBinContent(1);
591 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
597 Double_t xsection = 0;
598 xtree->SetBranchAddress(
"xsection",&xsection);
599 xtree->SetBranchAddress(
"ntrials",&ntrials);
616 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
618 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
622 Float_t xsection = 0;
626 TFile *curfile = tree->GetCurrentFile();
628 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
632 TChain *chain =
dynamic_cast<TChain*
>(tree);
633 if (chain) tree = chain->GetTree();
635 Int_t
nevents = tree->GetEntriesFast();
640 if ((pthardbin < 0) || (pthardbin > 10)) pthardbin = 0;
657 AliError(Form(
"%s: Could not retrieve parton infos! %s!", GetName(),
fPythiaInfoName.Data()));
669 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
676 fGeom = AliEMCALGeometry::GetInstance();
678 AliError(Form(
"%s: Can not create geometry", GetName()));
690 AliWarning(
"Could not set event plane limits because EMCal geometry was not loaded!");
703 AliError(Form(
"%s: Could not retrieve first track branch!", GetName()));
717 AliError(Form(
"%s: Could not retrieve first cluster branch!", GetName()));
725 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
733 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
759 AliESDEvent *esd =
dynamic_cast<AliESDEvent*
>(InputEvent());
761 const AliESDRun *run = esd->GetESDRun();
762 TString beamType = run->GetBeamType();
763 if (beamType ==
"p-p")
765 else if (beamType ==
"A-A")
767 else if (beamType ==
"p-A")
772 Int_t runNumber = InputEvent()->GetRunNumber();
773 if ((runNumber >= 136851 && runNumber <= 139517) ||
774 (runNumber >= 166529 && runNumber <= 170593)) {
776 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
777 (runNumber >= 195344 && runNumber <= 196608)) {
800 AliEMCALTriggerPatchInfo *patch;
801 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
803 if (patch->IsGammaHigh()) nG1++;
804 if (patch->IsGammaLow()) nG2++;
805 if (patch->IsJetHigh()) nJ1++;
806 if (patch->IsJetLow()) nJ2++;
807 if (patch->IsLevel0()) nL0++;
810 AliDebug(2,
"Patch summary: ");
811 AliDebug(2, Form(
"Number of patches: %d", nPatch));
812 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
813 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
816 if (nL0>0) SETBIT(triggers,
kL0);
817 if (nG1>0) SETBIT(triggers,
kG1);
818 if (nG2>0) SETBIT(triggers,
kG2);
819 if (nJ1>0) SETBIT(triggers,
kJ1);
820 if (nJ2>0) SETBIT(triggers,
kJ2);
829 AliWarning(Form(
"%s: Requesting undefined trigger type!", GetName()));
846 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
848 res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
850 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
852 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
863 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
865 fired = eev->GetFiredTriggerClasses();
867 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
869 fired = aev->GetFiredTriggerClasses();
872 if (!fired.Contains(
"-B-")) {
883 for (Int_t i=0;i<arr->GetEntriesFast();++i) {
884 TObject *obj = arr->At(i);
889 TString objStr = obj->GetName();
891 (objStr.Contains(
"J1") || objStr.Contains(
"J2") || objStr.Contains(
"G1") || objStr.Contains(
"G2"))) {
894 TString trigType1 =
"J1";
895 TString trigType2 =
"J2";
896 if(objStr.Contains(
"G")) {
900 if(objStr.Contains(trigType2) && fired.Contains(trigType2.Data())) {
904 else if(objStr.Contains(trigType1) && fired.Contains(trigType1.Data()) && !fired.Contains(trigType2.Data())) {
912 if (fired.Contains(obj->GetName())) {
933 if (fCent<fMinCent || fCent>
fMaxCent) {
969 if (vz<fMinVz || vz>
fMaxVz) {
976 Bool_t trackInEmcalOk = kFALSE;
978 for (Int_t i = 0; i < ntracks; i++) {
983 Double_t phiMin =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
984 Double_t phiMax =
fGeom->GetArm1PhiMax() * TMath::DegToRad();
985 Int_t runNumber = InputEvent()->GetRunNumber();
986 if (runNumber>=177295 && runNumber<=197470) {
988 phiMax = TMath::Pi();
991 if (track->Eta() <
fGeom->GetArm1EtaMin() || track->Eta() >
fGeom->GetArm1EtaMax() || track->Phi() < phiMin || track->Phi() > phiMax)
994 trackInEmcalOk = kTRUE;
998 if (!trackInEmcalOk) {
1005 Int_t nTracksAcc = 0;
1007 for (Int_t i = 0; i < ntracks; i++) {
1044 TClonesArray *arr = 0;
1045 TString sname(name);
1046 if (!sname.IsNull()) {
1047 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
1049 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
1059 TString objname(arr->GetClass()->GetName());
1060 TClass cls(objname);
1061 if (!cls.InheritsFrom(clname)) {
1062 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
1063 GetName(), cls.GetName(), name, clname));
1083 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1093 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
1094 if (MultSelection) {
1095 fCent = MultSelection->GetMultiplicityPercentile(
"V0M");
1098 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1102 AliCentrality *aliCent = InputEvent()->GetCentrality();
1107 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1117 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1126 else if (
fCent > 90) {
1131 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1144 AliWarning(Form(
"%s: fCentBin too large: cent = %f fCentBin = %d. Assuming 99", GetName(),
fCent,
fCentBin));
1149 AliEventplane *aliEP = InputEvent()->GetEventplane();
1151 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1152 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1153 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1155 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1166 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
1169 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
1172 for (UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
1173 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
1183 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
1184 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
1200 while ((cont = static_cast<AliEmcalContainer*>(nextPartColl()))) cont->
NextEvent();
1203 while ((cont = static_cast<AliParticleContainer*>(nextClusColl()))) cont->
NextEvent();
1214 TString tmp = TString(n);
1215 if (tmp.IsNull())
return 0;
1218 TString name = TString::Format(
"%s_Container", n);
1234 TString tmp = TString(n);
1235 if (tmp.IsNull())
return 0;
1238 TString name = TString::Format(
"%s_Container", n);
1292 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1306 AliError(Form(
"%s:Cluster container %d not found",GetName(),i));
1320 AliError(Form(
"%s: Particle container %d not found",GetName(),c));
1336 AliError(Form(
"%s: Cluster container %d not found",GetName(),c));
1351 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1364 AliError(Form(
"%s: Cluster container %d not found",GetName(),i));
1381 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
1389 AliEMCALTriggerPatchInfo *patch(NULL), *selected(NULL);
1390 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
1393 if (patch->IsMainTrigger()) {
1394 if(doSimpleOffline){
1395 if(patch->IsOfflineSimple()){
1399 if(patch->IsLevel0()) selected = patch;
1402 if(patch->IsJetHighSimple() || patch->IsJetLowSimple()){
1403 if(!selected) selected = patch;
1404 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1408 if(patch->IsGammaHighSimple() || patch->IsGammaLowSimple()){
1409 if(!selected) selected = patch;
1410 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1414 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1420 if(patch->IsLevel0()) selected = patch;
1423 if(patch->IsJetHigh() || patch->IsJetLow()){
1424 if(!selected) selected = patch;
1425 else if (patch->GetADCAmp() > selected->GetADCAmp())
1430 if(patch->IsGammaHigh() || patch->IsGammaLow()){
1431 if(!selected) selected = patch;
1432 else if (patch->GetADCAmp() > selected->GetADCAmp())
1437 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1443 if (doSimpleOffline && patch->IsOfflineSimple()) {
1444 if(!selected) selected = patch;
1445 else if (patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp())
1448 else if (!doSimpleOffline && !patch->IsOfflineSimple()) {
1449 if(!selected) selected = patch;
1450 else if (patch->GetADCAmp() > selected->GetADCAmp())
1463 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1464 InputEvent()->AddObject(obj);
1468 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1480 AliWarning(Form(
"%s - AliAnalysisTaskEmcal::IsTrackInEmcalAcceptance - Geometry is not available!", GetName()));
1484 Double_t minPhi =
fGeom->GetArm1PhiMin() - edges;
1485 Double_t maxPhi =
fGeom->GetArm1PhiMax() + edges;
1487 if (part->Phi() > minPhi && part->Phi() < maxPhi) {
1498 axis->SetBinLabel(1,
"NullObject");
1499 axis->SetBinLabel(2,
"Pt");
1500 axis->SetBinLabel(3,
"Acceptance");
1501 axis->SetBinLabel(4,
"BitMap");
1502 axis->SetBinLabel(5,
"Bit4");
1503 axis->SetBinLabel(6,
"Bit5");
1504 axis->SetBinLabel(7,
"Bit6");
1505 axis->SetBinLabel(8,
"NotHybridTrack");
1506 axis->SetBinLabel(9,
"MCFlag");
1507 axis->SetBinLabel(10,
"MCGenerator");
1508 axis->SetBinLabel(11,
"ChargeCut");
1509 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1510 axis->SetBinLabel(13,
"MinMCLabelAccept");
1511 axis->SetBinLabel(14,
"IsEMCal");
1512 axis->SetBinLabel(15,
"Time");
1513 axis->SetBinLabel(16,
"Energy");
1514 axis->SetBinLabel(17,
"Bit16");
1515 axis->SetBinLabel(18,
"Bit17");
1516 axis->SetBinLabel(19,
"Area");
1517 axis->SetBinLabel(20,
"AreaEmc");
1518 axis->SetBinLabel(21,
"ZLeadingCh");
1519 axis->SetBinLabel(22,
"ZLeadingEmc");
1520 axis->SetBinLabel(23,
"NEF");
1521 axis->SetBinLabel(24,
"MinLeadPt");
1522 axis->SetBinLabel(25,
"MaxTrackPt");
1523 axis->SetBinLabel(26,
"MaxClusterPt");
1524 axis->SetBinLabel(27,
"Flavour");
1525 axis->SetBinLabel(28,
"TagStatus");
1526 axis->SetBinLabel(29,
"MinNConstituents");
1527 axis->SetBinLabel(30,
"Bit29");
1528 axis->SetBinLabel(31,
"Bit30");
1529 axis->SetBinLabel(32,
"Bit31");
1537 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1538 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1539 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1548 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1549 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1563 Double_t veta = t->GetTrackEtaOnEMCal();
1564 Double_t vphi = t->GetTrackPhiOnEMCal();
1566 Float_t pos[3] = {0};
1567 v->GetPosition(pos);
1569 Double_t ceta = cpos.Eta();
1570 Double_t cphi = cpos.Phi();
1572 phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
1581 if (t->TestBit(BIT(22)) && !t->TestBit(BIT(23)))
1583 else if (!t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1585 else if (t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1599 if (aodTrack->TestFilterBit(filterBit1)) {
1602 else if (aodTrack->TestFilterBit(filterBit2)) {
1603 if ((aodTrack->GetStatus()&AliVTrack::kITSrefit)!=0) {
1626 AliStack* stack = mcEvent->Stack();
1628 const Int_t nprim = stack->GetNprimary();
1630 if (nprim < 8)
return;
1632 TParticle *part6 = stack->Particle(6);
1633 TParticle *part7 = stack->Particle(7);
1641 AliGenPythiaEventHeader *pythiaGenHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(mcEvent->GenEventHeader());
1642 if(pythiaGenHeader){
1643 Float_t
ptWeight=pythiaGenHeader->EventWeight();
Bool_t AcceptCluster(AliVCluster *vp)
Bool_t fGeneratePythiaInfoObject
TObjArray fClusterCollArray
void SetParticlePtCut(Double_t cut)
void SetParton7(Float_t pt, Float_t eta, Float_t phi, Float_t mass=0)
TH1 * fHistTrials
x section from pythia header
AliEmcalPythiaInfo * fPythiaInfo
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
void SetPartonFlag7(Int_t flag7)
Double_t fPtHard
event Pythia header
void SetTrackPtCut(Double_t cut, Int_t c=0)
static void GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
Double_t fEPV0
event centrality bin
Bool_t fGeneralHistograms
virtual void SetArray(AliVEvent *event)
Bool_t AcceptCluster(AliVCluster *clus, Int_t c=0) const
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
event parton info
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
void SetParton6(Float_t pt, Float_t eta, Float_t phi, Float_t mass=0)
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
Bool_t IsTrackInEmcalAcceptance(AliVParticle *part, Double_t edges=0.9) const
void SetArray(AliVEvent *event)
TH1 * fHistTriggerClasses
book keep reasons for rejecting event
void GeneratePythiaInfoObject(AliMCEvent *mcEvent)
AliEMCALGeometry * fGeom
whether it's an ESD analysis
TString fCaloTriggerPatchInfoName
TString fCaloTriggersName
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)
void SetPartonFlag6(Int_t flag6)
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
void LoadPythiaInfo(AliVEvent *event)
Bool_t fIsEsd
vertex selection (optional)
Double_t fVertex[3]
event plane V0C
Store some informaion about a Pythia event.
TH1 * fHistEventRejection
event plane distribution
TClonesArray * fTriggerPatchInfo
calo triggers
TClonesArray * GetClusterArray(Int_t i=0) const
Double_t fEPV0A
event plane V0
Declaration of class AliEmcalPythiaInfo.
void SetParticlePhiLimits(Double_t min, Double_t max, Double_t offset=0.)
void SetClusPtCut(Double_t cut)
void AddObjectToEvent(TObject *obj, Bool_t attempt=kFALSE)
AliVCaloTrigger * fCaloTriggers
cells
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
TH1 * fHistZVertex
event centrality distribution
Int_t GetNEntries() const
static Byte_t GetTrackType(const AliVTrack *t)
void SetClusTimeCut(Double_t min, Double_t max, Int_t c=0)
void SetPythiaEventWeight(Float_t ptWeight)
Float_t fXsection
event trials
TH1 * fHistEventCount
output list
AliVParticle * GetAcceptParticle(Int_t i=-1)
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()
AliEMCALTriggerPatchInfo * GetMainTriggerPatch(TriggerCategory triggersel=kTriggerLevel1Jet, Bool_t doOfflinSimple=kFALSE)
static Double_t fgkEMCalDCalPhiDivide