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"
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 fGeneratePythiaInfoObject(kFALSE),
91 fAliAnalysisUtils(0x0),
114 fHistTrialsAfterSel(0),
115 fHistEventsAfterSel(0),
116 fHistXsectionAfterSel(0),
124 fHistEventRejection(0),
125 fHistTriggerClasses(0)
133 fParticleCollArray.SetOwner(kTRUE);
134 fClusterCollArray.SetOwner(kTRUE);
139 AliAnalysisTaskSE(name),
141 fGeneralHistograms(kFALSE),
142 fInitialized(kFALSE),
146 fCaloTriggerPatchInfoName(),
153 fUseAliAnaUtils(kFALSE),
154 fRejectPileup(kFALSE),
155 fTklVsClusSPDCut(kFALSE),
156 fOffTrigger(AliVEvent::kAny),
158 fTriggerTypeSel(kND),
162 fMinPtTrackInEmcal(0),
163 fEventPlaneVsEmcal(-1),
164 fMinEventPlane(-1e6),
169 fSelectPtHardBin(-999),
173 fNeedEmcalGeom(kTRUE),
174 fParticleCollArray(),
177 fEMCalTriggerMode(kOverlapWithLowThreshold),
178 fUseNewCentralityEstimation(kFALSE),
179 fGeneratePythiaInfoObject(kFALSE),
180 fAliAnalysisUtils(0x0),
187 fTriggerPatchInfo(0),
203 fHistTrialsAfterSel(0),
204 fHistEventsAfterSel(0),
205 fHistXsectionAfterSel(0),
213 fHistEventRejection(0),
214 fHistTriggerClasses(0)
226 DefineOutput(1, TList::Class());
241 else AliError(Form(
"%s in SetClusPtCut(...): container %d not found",GetName(),c));
249 else AliError(Form(
"%s in SetClusTimeCut(...): container %d not found",GetName(),c));
257 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
267 else AliError(Form(
"%s in SetTrackPtCut(...): container %d not found",GetName(),c));
275 else AliError(Form(
"%s in SetTrackPhiLimits(...): container %d not found",GetName(),c));
283 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
285 AliVEventHandler *evhand = mgr->GetInputEventHandler();
287 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
295 AliError(
"Event handler not found!");
299 AliError(
"Analysis manager not found!");
331 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 11, 0, 11);
332 fHistTrials->GetXaxis()->SetTitle(
"p_{T} hard bin");
336 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 11, 0, 11);
337 fHistEvents->GetXaxis()->SetTitle(
"p_{T} hard bin");
341 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 11, 0, 11);
346 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
347 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
349 for (Int_t i = 1; i < 12; i++) {
350 fHistTrialsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
351 fHistEventsAfterSel->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
353 fHistTrials->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
354 fHistXsection->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
355 fHistEvents->GetXaxis()->SetBinLabel(i, Form(
"%d-%d",ptHardLo[i-1],ptHardHi[i-1]));
359 fHistPtHard->GetXaxis()->SetTitle(
"p_{T,hard} (GeV/c)");
364 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
370 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 200, 0, 100);
375 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
382 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
404 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2)
437 TObjArray* triggerClasses = InputEvent()->GetFiredTriggerClasses().Tokenize(
" ");
438 TIter next(triggerClasses);
439 TObjString* triggerClass = 0;
440 while ((triggerClass = static_cast<TObjString*>(next()))) {
443 delete triggerClasses;
495 AliWarning(
"AliAnalysisTaskEmcal::AcceptCluster method is deprecated. Please use GetCusterContainer(c)->AcceptCluster(clus).");
497 if (!clus)
return kFALSE;
501 AliError(Form(
"%s:Container %d not found",GetName(),c));
513 AliWarning(
"AliAnalysisTaskEmcal::AcceptTrack method is deprecated. Please use GetParticleContainer(c)->AcceptParticle(clus).");
515 if (!track)
return kFALSE;
519 AliError(Form(
"%s:Container %d not found",GetName(),c));
535 TString
file(currFile);
539 if (file.Contains(
".zip#")) {
540 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
541 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
542 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
543 file.Replace(pos+1,pos2-pos1,
"");
546 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
548 AliDebug(1,Form(
"File name: %s",file.Data()));
551 TString strPthard(file);
553 strPthard.Remove(strPthard.Last(
'/'));
554 strPthard.Remove(strPthard.Last(
'/'));
555 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
556 strPthard.Remove(0,strPthard.Last(
'/')+1);
557 if (strPthard.IsDec())
558 pthard = strPthard.Atoi();
560 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
563 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
567 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
573 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
578 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
583 fXsec = ((TProfile*)list->FindObject(
"h1Xsec"))->GetBinContent(1);
584 fTrials = ((TH1F*)list->FindObject(
"h1Trials"))->GetBinContent(1);
588 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
594 Double_t xsection = 0;
595 xtree->SetBranchAddress(
"xsection",&xsection);
596 xtree->SetBranchAddress(
"ntrials",&ntrials);
613 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
615 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
619 Float_t xsection = 0;
623 TFile *curfile = tree->GetCurrentFile();
625 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
629 TChain *chain =
dynamic_cast<TChain*
>(tree);
630 if (chain) tree = chain->GetTree();
632 Int_t
nevents = tree->GetEntriesFast();
637 if ((pthardbin < 0) || (pthardbin > 10)) pthardbin = 0;
654 AliError(Form(
"%s: Could not retrieve parton infos! %s!", GetName(),
fPythiaInfoName.Data()));
666 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
673 fGeom = AliEMCALGeometry::GetInstance();
675 AliError(Form(
"%s: Can not create geometry", GetName()));
687 AliWarning(
"Could not set event plane limits because EMCal geometry was not loaded!");
700 AliError(Form(
"%s: Could not retrieve first track branch!", GetName()));
714 AliError(Form(
"%s: Could not retrieve first cluster branch!", GetName()));
722 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
730 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
756 AliESDEvent *esd =
dynamic_cast<AliESDEvent*
>(InputEvent());
758 const AliESDRun *run = esd->GetESDRun();
759 TString beamType = run->GetBeamType();
760 if (beamType ==
"p-p")
762 else if (beamType ==
"A-A")
764 else if (beamType ==
"p-A")
769 Int_t runNumber = InputEvent()->GetRunNumber();
770 if ((runNumber >= 136851 && runNumber <= 139517) ||
771 (runNumber >= 166529 && runNumber <= 170593)) {
773 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
774 (runNumber >= 195344 && runNumber <= 196608)) {
797 AliEMCALTriggerPatchInfo *patch;
798 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
800 if (patch->IsGammaHigh()) nG1++;
801 if (patch->IsGammaLow()) nG2++;
802 if (patch->IsJetHigh()) nJ1++;
803 if (patch->IsJetLow()) nJ2++;
804 if (patch->IsLevel0()) nL0++;
807 AliDebug(2,
"Patch summary: ");
808 AliDebug(2, Form(
"Number of patches: %d", nPatch));
809 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
810 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
813 if (nL0>0) SETBIT(triggers,
kL0);
814 if (nG1>0) SETBIT(triggers,
kG1);
815 if (nG2>0) SETBIT(triggers,
kG2);
816 if (nJ1>0) SETBIT(triggers,
kJ1);
817 if (nJ2>0) SETBIT(triggers,
kJ2);
826 AliWarning(Form(
"%s: Requesting undefined trigger type!", GetName()));
843 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
845 res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
847 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
849 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
860 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(InputEvent());
862 fired = eev->GetFiredTriggerClasses();
864 const AliAODEvent *aev =
dynamic_cast<const AliAODEvent*
>(InputEvent());
866 fired = aev->GetFiredTriggerClasses();
869 if (!fired.Contains(
"-B-")) {
880 for (Int_t i=0;i<arr->GetEntriesFast();++i) {
881 TObject *obj = arr->At(i);
886 TString objStr = obj->GetName();
888 (objStr.Contains(
"J1") || objStr.Contains(
"J2") || objStr.Contains(
"G1") || objStr.Contains(
"G2"))) {
891 TString trigType1 =
"J1";
892 TString trigType2 =
"J2";
893 if(objStr.Contains(
"G")) {
897 if(objStr.Contains(trigType2) && fired.Contains(trigType2.Data())) {
901 else if(objStr.Contains(trigType1) && fired.Contains(trigType1.Data()) && !fired.Contains(trigType2.Data())) {
909 if (fired.Contains(obj->GetName())) {
930 if (fCent<fMinCent || fCent>
fMaxCent) {
966 if (vz<fMinVz || vz>
fMaxVz) {
973 Bool_t trackInEmcalOk = kFALSE;
975 for (Int_t i = 0; i < ntracks; i++) {
980 Double_t phiMin =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
981 Double_t phiMax =
fGeom->GetArm1PhiMax() * TMath::DegToRad();
982 Int_t runNumber = InputEvent()->GetRunNumber();
983 if (runNumber>=177295 && runNumber<=197470) {
985 phiMax = TMath::Pi();
988 if (track->Eta() <
fGeom->GetArm1EtaMin() || track->Eta() >
fGeom->GetArm1EtaMax() || track->Phi() < phiMin || track->Phi() > phiMax)
991 trackInEmcalOk = kTRUE;
995 if (!trackInEmcalOk) {
1002 Int_t nTracksAcc = 0;
1004 for (Int_t i = 0; i < ntracks; i++) {
1041 TClonesArray *arr = 0;
1042 TString sname(name);
1043 if (!sname.IsNull()) {
1044 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
1046 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
1056 TString objname(arr->GetClass()->GetName());
1057 TClass cls(objname);
1058 if (!cls.InheritsFrom(clname)) {
1059 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
1060 GetName(), cls.GetName(), name, clname));
1080 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1090 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
1091 if (MultSelection) {
1092 fCent = MultSelection->GetMultiplicityPercentile(
"V0M");
1095 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1099 AliCentrality *aliCent = InputEvent()->GetCentrality();
1104 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1114 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1123 else if (
fCent > 90) {
1128 AliWarning(Form(
"%s: Negative centrality: %f. Assuming 99", GetName(),
fCent));
1141 AliWarning(Form(
"%s: fCentBin too large: cent = %f fCentBin = %d. Assuming 99", GetName(),
fCent,
fCentBin));
1146 AliEventplane *aliEP = InputEvent()->GetEventplane();
1148 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1149 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1150 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1152 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1163 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
1166 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
1169 for (UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
1170 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
1180 const Int_t ptHardLo[11] = { 0, 5,11,21,36,57, 84,117,152,191,234};
1181 const Int_t ptHardHi[11] = { 5,11,21,36,57,84,117,152,191,234,1000000};
1197 while ((cont = static_cast<AliEmcalContainer*>(nextPartColl()))) cont->
NextEvent();
1200 while ((cont = static_cast<AliParticleContainer*>(nextClusColl()))) cont->
NextEvent();
1211 if (TString(n).IsNull())
return 0;
1226 if (TString(n).IsNull())
return 0;
1241 if (TString(n).IsNull())
return 0;
1256 if (TString(n).IsNull())
return 0;
1310 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1324 AliError(Form(
"%s:Cluster container %d not found",GetName(),i));
1338 AliError(Form(
"%s: Particle container %d not found",GetName(),c));
1354 AliError(Form(
"%s: Cluster container %d not found",GetName(),c));
1369 AliError(Form(
"%s: Particle container %d not found",GetName(),i));
1382 AliError(Form(
"%s: Cluster container %d not found",GetName(),i));
1399 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
1407 AliEMCALTriggerPatchInfo *patch(NULL), *selected(NULL);
1408 for (Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
1411 if (patch->IsMainTrigger()) {
1412 if(doSimpleOffline){
1413 if(patch->IsOfflineSimple()){
1417 if(patch->IsLevel0()) selected = patch;
1420 if(patch->IsJetHighSimple() || patch->IsJetLowSimple()){
1421 if(!selected) selected = patch;
1422 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1426 if(patch->IsGammaHighSimple() || patch->IsGammaLowSimple()){
1427 if(!selected) selected = patch;
1428 else if(patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp()) selected = patch;
1432 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1438 if(patch->IsLevel0()) selected = patch;
1441 if(patch->IsJetHigh() || patch->IsJetLow()){
1442 if(!selected) selected = patch;
1443 else if (patch->GetADCAmp() > selected->GetADCAmp())
1448 if(patch->IsGammaHigh() || patch->IsGammaLow()){
1449 if(!selected) selected = patch;
1450 else if (patch->GetADCAmp() > selected->GetADCAmp())
1455 AliError(
"Untreated case: Main Patch is recalculated; should be in 'else' branch");
1461 if (doSimpleOffline && patch->IsOfflineSimple()) {
1462 if(!selected) selected = patch;
1463 else if (patch->GetADCOfflineAmp() > selected->GetADCOfflineAmp())
1466 else if (!doSimpleOffline && !patch->IsOfflineSimple()) {
1467 if(!selected) selected = patch;
1468 else if (patch->GetADCAmp() > selected->GetADCAmp())
1481 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1482 InputEvent()->AddObject(obj);
1486 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1498 AliWarning(Form(
"%s - AliAnalysisTaskEmcal::IsTrackInEmcalAcceptance - Geometry is not available!", GetName()));
1502 Double_t minPhi =
fGeom->GetArm1PhiMin() - edges;
1503 Double_t maxPhi =
fGeom->GetArm1PhiMax() + edges;
1505 if (part->Phi() > minPhi && part->Phi() < maxPhi) {
1516 axis->SetBinLabel(1,
"NullObject");
1517 axis->SetBinLabel(2,
"Pt");
1518 axis->SetBinLabel(3,
"Acceptance");
1519 axis->SetBinLabel(4,
"MCLabel");
1520 axis->SetBinLabel(5,
"BitMap");
1521 axis->SetBinLabel(6,
"HF cut");
1522 axis->SetBinLabel(7,
"Bit6");
1523 axis->SetBinLabel(8,
"NotHybridTrack");
1524 axis->SetBinLabel(9,
"MCFlag");
1525 axis->SetBinLabel(10,
"MCGenerator");
1526 axis->SetBinLabel(11,
"ChargeCut");
1527 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1528 axis->SetBinLabel(13,
"Bit12");
1529 axis->SetBinLabel(14,
"IsEMCal");
1530 axis->SetBinLabel(15,
"Time");
1531 axis->SetBinLabel(16,
"Energy");
1532 axis->SetBinLabel(17,
"ExoticCut");
1533 axis->SetBinLabel(18,
"Bit17");
1534 axis->SetBinLabel(19,
"Area");
1535 axis->SetBinLabel(20,
"AreaEmc");
1536 axis->SetBinLabel(21,
"ZLeadingCh");
1537 axis->SetBinLabel(22,
"ZLeadingEmc");
1538 axis->SetBinLabel(23,
"NEF");
1539 axis->SetBinLabel(24,
"MinLeadPt");
1540 axis->SetBinLabel(25,
"MaxTrackPt");
1541 axis->SetBinLabel(26,
"MaxClusterPt");
1542 axis->SetBinLabel(27,
"Flavour");
1543 axis->SetBinLabel(28,
"TagStatus");
1544 axis->SetBinLabel(29,
"MinNConstituents");
1545 axis->SetBinLabel(30,
"Bit29");
1546 axis->SetBinLabel(31,
"Bit30");
1547 axis->SetBinLabel(32,
"Bit31");
1555 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1556 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1557 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1566 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1567 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1581 Double_t veta = t->GetTrackEtaOnEMCal();
1582 Double_t vphi = t->GetTrackPhiOnEMCal();
1584 Float_t pos[3] = {0};
1585 v->GetPosition(pos);
1587 Double_t ceta = cpos.Eta();
1588 Double_t cphi = cpos.Phi();
1590 phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
1599 if (t->TestBit(BIT(22)) && !t->TestBit(BIT(23)))
1601 else if (!t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1603 else if (t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1617 if (aodTrack->TestFilterBit(filterBit1)) {
1620 else if (aodTrack->TestFilterBit(filterBit2)) {
1621 if ((aodTrack->GetStatus()&AliVTrack::kITSrefit)!=0) {
1644 AliStack* stack = mcEvent->Stack();
1646 const Int_t nprim = stack->GetNprimary();
1648 if (nprim < 8)
return;
1650 TParticle *part6 = stack->Particle(6);
1651 TParticle *part7 = stack->Particle(7);
1659 AliGenPythiaEventHeader *pythiaGenHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(mcEvent->GenEventHeader());
1660 if(pythiaGenHeader){
1661 Float_t
ptWeight=pythiaGenHeader->EventWeight();
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
Double_t fMinPtTrackInEmcal
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
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
AliMCParticleContainer * AddMCParticleContainer(const char *n)
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
AliTrackContainer * AddTrackContainer(const char *n)
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
TH1 * fHistEventRejection
event plane distribution
TClonesArray * fTriggerPatchInfo
calo triggers
TClonesArray * GetClusterArray(Int_t i=0) const
Double_t fEPV0A
event plane V0
virtual Bool_t AcceptCluster(Int_t i)
Declaration of class AliEmcalPythiaInfo.
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
virtual AliVParticle * GetAcceptParticle(Int_t i=-1)
void SetClusTimeCut(Double_t min, Double_t max)
void SetParticlePhiLimits(Double_t min, Double_t max)
AliVParticle * GetAcceptParticleFromArray(Int_t p, Int_t c=0) const
virtual Bool_t AcceptParticle(const AliVParticle *vp)
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