19 #include <TClonesArray.h> 29 #include "AliGenCocktailEventHeader.h" 31 #include "AliAODEvent.h" 32 #include "AliAnalysisManager.h" 33 #include "AliCentrality.h" 34 #include "AliEMCALGeometry.h" 35 #include "AliESDEvent.h" 37 #include "AliEventplane.h" 38 #include "AliInputEventHandler.h" 40 #include "AliMCParticle.h" 41 #include "AliVCluster.h" 42 #include "AliVEventHandler.h" 43 #include "AliVParticle.h" 44 #include "AliAODTrack.h" 45 #include "AliVCaloTrigger.h" 46 #include "AliGenPythiaEventHeader.h" 47 #include "AliAODMCHeader.h" 48 #include "AliMCEvent.h" 49 #include "AliEMCALTriggerPatchInfo.h" 51 #include "AliMultSelection.h" 67 fGeneralHistograms(kFALSE),
69 fNeedEmcalGeom(kTRUE),
71 fCentralityEstimation(kNewCentrality),
75 fCaloTriggerPatchInfoName(),
79 fTriggerSelectionBitMap(0),
88 fMaxMinimumBiasPtHard(-1),
89 fAcceptedTriggerClasses(),
90 fRejectedTriggerClasses(),
91 fMCRejectFilter(kFALSE),
92 fPtHardAndJetPtFactor(0.),
93 fPtHardAndClusterPtFactor(0.),
94 fPtHardAndTrackPtFactor(0.),
95 fSwitchOffLHC15oFaultyBranches(kFALSE),
96 fEventSelectionAfterRun(kFALSE),
97 fSelectGeneratorName(),
98 fLocalInitialized(kFALSE),
103 fTriggerPatchInfo(0),
111 fFiredTriggerBitMap(0),
112 fFiredTriggerClasses(),
121 fHistTrialsVsPtHardNoSel(0),
122 fHistEventsVsPtHardNoSel(0),
123 fHistXsectionVsPtHardNoSel(0),
124 fHistTriggerClassesNoSel(0),
125 fHistZVertexNoSel(0),
126 fHistCentralityNoSel(0),
127 fHistEventPlaneNoSel(0),
128 fHistTrialsVsPtHard(0),
129 fHistEventsVsPtHard(0),
130 fHistXsectionVsPtHard(0),
131 fHistTriggerClasses(0),
136 fHistEventRejection(0),
162 fGeneralHistograms(kFALSE),
164 fNeedEmcalGeom(kTRUE),
166 fCentralityEstimation(kNewCentrality),
170 fCaloTriggerPatchInfoName(),
172 fParticleCollArray(),
174 fTriggerSelectionBitMap(0),
183 fMaxMinimumBiasPtHard(-1),
184 fAcceptedTriggerClasses(),
185 fRejectedTriggerClasses(),
186 fMCRejectFilter(kFALSE),
187 fPtHardAndJetPtFactor(0.),
188 fPtHardAndClusterPtFactor(0.),
189 fPtHardAndTrackPtFactor(0.),
190 fSwitchOffLHC15oFaultyBranches(kFALSE),
191 fEventSelectionAfterRun(kFALSE),
192 fSelectGeneratorName(),
193 fLocalInitialized(kFALSE),
198 fTriggerPatchInfo(0),
206 fFiredTriggerBitMap(0),
207 fFiredTriggerClasses(),
216 fHistTrialsVsPtHardNoSel(0),
217 fHistEventsVsPtHardNoSel(0),
218 fHistXsectionVsPtHardNoSel(0),
219 fHistTriggerClassesNoSel(0),
220 fHistZVertexNoSel(0),
221 fHistCentralityNoSel(0),
222 fHistEventPlaneNoSel(0),
223 fHistTrialsVsPtHard(0),
224 fHistEventsVsPtHard(0),
225 fHistXsectionVsPtHard(0),
226 fHistTriggerClasses(0),
231 fHistEventRejection(0),
285 AliVEventHandler *evhand = mgr->GetInputEventHandler();
287 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
295 AliError(
"Event handler not found!");
299 AliError(
"Analysis manager not found!");
314 fHistEventsVsPtHard =
new TH1F(
"fHistEventsVsPtHard",
"fHistEventsVsPtHard", 1000, 0, 1000);
319 fHistTrialsVsPtHard =
new TH1F(
"fHistTrialsVsPtHard",
"fHistTrialsVsPtHard", 1000, 0, 1000);
324 fHistXsectionVsPtHard =
new TProfile(
"fHistXsectionVsPtHard",
"fHistXsectionVsPtHard", 1000, 0, 1000);
344 fHistTrials =
new TH1F(
"fHistTrials",
"fHistTrials", 50, 0, 50);
345 fHistTrials->GetXaxis()->SetTitle(
"#it{p}_{T,hard} bin");
349 fHistEvents =
new TH1F(
"fHistEvents",
"fHistEvents", 50, 0, 50);
350 fHistEvents->GetXaxis()->SetTitle(
"#it{p}_{T,hard} bin");
354 fHistXsection =
new TProfile(
"fHistXsection",
"fHistXsection", 50, 0, 50);
360 fHistZVertex =
new TH1F(
"fHistZVertex",
"Z vertex position", 60, -30, 30);
365 fHistZVertexNoSel =
new TH1F(
"fHistZVertexNoSel",
"Z vertex position (no event selection)", 60, -30, 30);
371 fHistCentrality =
new TH1F(
"fHistCentrality",
"Event centrality distribution", 100, 0, 100);
376 fHistCentralityNoSel =
new TH1F(
"fHistCentralityNoSel",
"Event centrality distribution (no event selection)", 100, 0, 100);
383 fHistEventPlane =
new TH1F(
"fHistEventPlane",
"Event plane", 120, -TMath::Pi(), TMath::Pi());
388 fHistEventPlaneNoSel =
new TH1F(
"fHistEventPlaneNoSel",
"Event plane (no event selection)", 120, -TMath::Pi(), TMath::Pi());
395 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2) 400 std::array<std::string, 10> labels = {
"PhysSel",
"Evt Gen Name",
"Trg class (acc)",
"Trg class (rej)",
"Cent",
"vertex contr.",
"Vz",
"VzSPD",
"SelPtHardBin",
"MCOutlier"};
402 for (
auto label : labels) {
410 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2) 418 #if ROOT_VERSION_CODE < ROOT_VERSION(6,4,2) 553 if (file.Contains(
".zip#")) {
554 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
555 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
556 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
557 file.Replace(pos+1,pos2-pos1,
"");
560 file.ReplaceAll(
gSystem->BaseName(file.Data()),
"");
562 AliDebug(1,Form(
"File name: %s",file.Data()));
567 strPthard.Remove(strPthard.Last(
'/'));
568 strPthard.Remove(strPthard.Last(
'/'));
569 if (strPthard.Contains(
"AOD")) strPthard.Remove(strPthard.Last(
'/'));
570 strPthard.Remove(0,strPthard.Last(
'/')+1);
571 if (strPthard.IsDec()) {
572 pthard = strPthard.Atoi();
575 AliWarning(Form(
"Could not extract file number from path %s", strPthard.Data()));
580 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
584 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
590 TKey* key =
static_cast<TKey*
>(fxsec->GetListOfKeys()->At(0));
595 TList *list =
dynamic_cast<TList*
>(key->ReadObj());
600 fXsec =
static_cast<TProfile*
>(list->FindObject(
"h1Xsec"))->GetBinContent(1);
601 fTrials =
static_cast<TH1F*
>(list->FindObject(
"h1Trials"))->GetBinContent(1);
605 TTree *xtree =
static_cast<TTree*
>(fxsec->Get(
"Xsection"));
612 xtree->SetBranchAddress(
"xsection",&xsection);
613 xtree->SetBranchAddress(
"ntrials",&ntrials);
640 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
642 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
650 TFile *curfile = tree->GetCurrentFile();
652 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
657 if (chain) tree = chain->GetTree();
665 if (!res)
return kTRUE;
687 AliError(Form(
"%s: Could not retrieve event! Returning!", GetName()));
692 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(InputEvent()->
GetRunNumber());
694 AliFatal(Form(
"%s: Can not get EMCal geometry instance. If you do not need the EMCal geometry, disable it by setting task->SetNeedEmcalGeometry(kFALSE).", GetName()));
700 TTree *aodTree = AliAnalysisManager::GetAnalysisManager()->GetTree();
701 aodTree->SetBranchStatus(
"D0toKpi.fPx", 0);
702 aodTree->SetBranchStatus(
"D0toKpi.fPy", 0);
703 aodTree->SetBranchStatus(
"D0toKpi.fPz", 0);
704 aodTree->SetBranchStatus(
"D0toKpi.fd0", 0);
705 aodTree->SetBranchStatus(
"Charm3Prong.fPx", 0);
706 aodTree->SetBranchStatus(
"Charm3Prong.fPy", 0);
707 aodTree->SetBranchStatus(
"Charm3Prong.fPz", 0);
708 aodTree->SetBranchStatus(
"Charm3Prong.fd0", 0);
709 aodTree->SetBranchStatus(
"Dstar.fPx", 0);
710 aodTree->SetBranchStatus(
"Dstar.fPy", 0);
711 aodTree->SetBranchStatus(
"Dstar.fPz", 0);
712 aodTree->SetBranchStatus(
"Dstar.fd0", 0);
724 AliError(Form(
"%s: Could not retrieve cells %s!", GetName(),
fCaloCellsName.Data()));
732 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
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();
774 if ((runNumber >= 136833 && runNumber <= 139517) ||
775 (runNumber >= 167693 && runNumber <= 170593) ||
776 (runNumber >= 244824 && runNumber <= 246994)) {
778 }
else if ((runNumber >= 188356 && runNumber <= 188366) ||
779 (runNumber >= 195164 && runNumber <= 197388) ||
780 (runNumber >= 265015 && runNumber <= 267166)) {
823 Bool_t acceptedTrgClassFound = kFALSE;
827 if (fired_trg.find(acc_trg) != std::string::npos) {
828 acceptedTrgClassFound = kTRUE;
832 if (acceptedTrgClassFound)
break;
835 if (!acceptedTrgClassFound) {
844 if (fired_trg.find(rej_trg) != std::string::npos) {
852 if (fMinCent < fMaxCent && fMaxCent > 0) {
853 if (fCent < fMinCent || fCent >
fMaxCent) {
917 TClonesArray *arr = 0;
919 if (!sname.IsNull()) {
920 arr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(sname));
922 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
932 TString objname(arr->GetClass()->GetName());
934 if (!cls.InheritsFrom(clname)) {
935 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
936 GetName(), cls.GetName(), name, clname));
959 std::stringstream firedClasses(InputEvent()->GetFiredTriggerClasses().
Data());
960 while (firedClasses.good()) {
961 std::string trgClass;
962 firedClasses >> trgClass;
970 fFiredTriggerBitMap =
static_cast<AliVAODHeader*
>(InputEvent()->GetHeader())->GetOfflineTrigger();
973 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
979 const AliVVertex *vertSPD = InputEvent()->GetPrimaryVertexSPD();
996 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
998 fCent = MultSelection->GetMultiplicityPercentile(
fCentEst.Data());
1001 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1006 AliCentrality *aliCent = InputEvent()->GetCentrality();
1011 AliWarning(Form(
"%s: Could not retrieve centrality information! Assuming 99", GetName()));
1024 AliEventplane *aliEP = InputEvent()->GetEventplane();
1026 fEPV0 = aliEP->GetEventplane(
"V0" ,InputEvent());
1027 fEPV0A = aliEP->GetEventplane(
"V0A",InputEvent());
1028 fEPV0C = aliEP->GetEventplane(
"V0C",InputEvent());
1030 AliWarning(Form(
"%s: Could not retrieve event plane information!", GetName()));
1036 AliGenEventHeader* header = MCEvent()->GenEventHeader();
1037 if (header->InheritsFrom(
"AliGenPythiaEventHeader")) {
1038 fPythiaHeader =
static_cast<AliGenPythiaEventHeader*
>(header);
1040 else if (header->InheritsFrom(
"AliGenCocktailEventHeader")) {
1041 AliGenCocktailEventHeader* cocktailHeader =
static_cast<AliGenCocktailEventHeader*
>(header);
1042 TList* headers = cocktailHeader->GetHeaders();
1043 for (
auto obj : *headers) {
1044 fPythiaHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(obj);
1072 if (branchName.size() == 0)
return 0;
1076 if (branchName ==
"tracks" || branchName ==
"Tracks") cont =
new AliTrackContainer(branchName.c_str());
1080 if (contName.size() > 0) cont->SetName(contName.c_str());
1097 if (branchName.size() == 0)
return 0;
1101 if (contName.size() > 0) cont->SetName(contName.c_str());
1115 std::map<std::string, AliParticleContainer*>::const_iterator cont_it =
fParticleCollArray.find(name);
1117 else return nullptr;
1127 std::map<std::string, AliClusterContainer*>::const_iterator cont_it =
fClusterCollArray.find(name);
1129 else return nullptr;
1139 if (!(InputEvent()->FindListObject(obj->GetName()))) {
1140 InputEvent()->AddObject(obj);
1144 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(), obj->GetName()));
1160 AliWarning(Form(
"%s - AliAnalysisTaskEmcalBase::IsTrackInEmcalAcceptance - Geometry is not available!", GetName()));
1167 if (part->Phi() > minPhi && part->Phi() < maxPhi) {
1177 axis->SetBinLabel(1,
"NullObject");
1178 axis->SetBinLabel(2,
"Pt");
1179 axis->SetBinLabel(3,
"Acceptance");
1180 axis->SetBinLabel(4,
"MCLabel");
1181 axis->SetBinLabel(5,
"BitMap");
1182 axis->SetBinLabel(6,
"HF cut");
1183 axis->SetBinLabel(7,
"Bit6");
1184 axis->SetBinLabel(8,
"NotHybridTrack");
1185 axis->SetBinLabel(9,
"MCFlag");
1186 axis->SetBinLabel(10,
"MCGenerator");
1187 axis->SetBinLabel(11,
"ChargeCut");
1188 axis->SetBinLabel(12,
"MinDistanceTPCSectorEdge");
1189 axis->SetBinLabel(13,
"Bit12");
1190 axis->SetBinLabel(14,
"IsEMCal");
1191 axis->SetBinLabel(15,
"Time");
1192 axis->SetBinLabel(16,
"Energy");
1193 axis->SetBinLabel(17,
"ExoticCut");
1194 axis->SetBinLabel(18,
"Bit17");
1195 axis->SetBinLabel(19,
"Area");
1196 axis->SetBinLabel(20,
"AreaEmc");
1197 axis->SetBinLabel(21,
"ZLeadingCh");
1198 axis->SetBinLabel(22,
"ZLeadingEmc");
1199 axis->SetBinLabel(23,
"NEF");
1200 axis->SetBinLabel(24,
"MinLeadPt");
1201 axis->SetBinLabel(25,
"MaxTrackPt");
1202 axis->SetBinLabel(26,
"MaxClusterPt");
1203 axis->SetBinLabel(27,
"Flavour");
1204 axis->SetBinLabel(28,
"TagStatus");
1205 axis->SetBinLabel(29,
"MinNConstituents");
1206 axis->SetBinLabel(30,
"Bit29");
1207 axis->SetBinLabel(31,
"Bit30");
1208 axis->SetBinLabel(32,
"Bit31");
1219 TVector3 vect1(part1->Px(), part1->Py(), part1->Pz());
1220 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1221 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1233 TVector3 vect2(part2->Px(), part2->Py(), part2->Pz());
1234 Double_t z = (vect1 * vect2) / (vect2 * vect2);
1253 Double_t veta = t->GetTrackEtaOnEMCal();
1254 Double_t vphi = t->GetTrackPhiOnEMCal();
1257 v->GetPosition(pos);
1262 phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
1273 if (t->TestBit(BIT(22)) && !t->TestBit(BIT(23)))
1275 else if (!t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1277 else if (t->TestBit(BIT(22)) && t->TestBit(BIT(23)))
1296 if (aodTrack->TestFilterBit(filterBit1)) {
1299 else if (aodTrack->TestFilterBit(filterBit2)) {
1300 if ((aodTrack->GetStatus()&AliVTrack::kITSrefit)!=0) {
1322 if ((runnumber >= 136833 && runnumber <= 139517) ||
1323 (runnumber >= 167693 && runnumber <= 170593) ||
1324 (runnumber >= 244824 && runnumber <= 246994)) {
1327 else if ((runnumber > 188356 && runnumber <= 188503) ||
1328 (runnumber >= 195164 && runnumber <= 197388) ||
1329 (runnumber >= 265077 && runnumber <= 267166)) {
1350 AliDebug(1,Form(
"Njets: %d, pT Hard %f",nTriggerJets,
fPtHard));
1353 for (
Int_t ijet = 0; ijet< nTriggerJets; ijet++) {
1356 jet.SetPxPyPzE(tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3]);
1358 AliDebug(1,Form(
"jet %d; pycell jet pT %f",ijet, jet.Pt()));
1362 AliInfo(Form(
"Reject jet event with : pT Hard %2.2f, pycell jet pT %2.2f, rejection factor %1.1f\n",
fPtHard, jet.Pt(),
fPtHardAndJetPtFactor));
1372 if ((
Bool_t)mccluscont) {
1373 for (
auto cluster : mccluscont->all()) {
1374 Float_t ecluster = cluster->E();
1388 if ((
Bool_t)mcpartcont) {
1389 for (
auto mctrack : mcpartcont->
all()) {
1390 Float_t trackpt = mctrack->Pt();
1414 const Double_t tpi = TMath::TwoPi();
1416 if (phia < 0) phia += tpi;
1417 else if (phia > tpi) phia -= tpi;
1418 if (phib < 0) phib += tpi;
1419 else if (phib > tpi) phib -= tpi;
1421 if (dphi < rangeMin) dphi += tpi;
1422 else if (dphi > rangeMax) dphi -= tpi;
1438 double binWidth = (max - min) / n;
1441 for (
int i = 0; i < n; i++) {
1458 std::vector<double> array;
Bool_t fSwitchOffLHC15oFaultyBranches
Switch off faulty tree branches in LHC15o AOD trees.
void SetRejectionReasonLabels(TAxis *axis)
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
Float_t fPtHardAndJetPtFactor
Factor between ptHard and jet pT to reject/accept event.
Double_t fVertexSPD[3]
!event Svertex
void UserCreateOutputObjects()
TString fCaloTriggersName
name of calo triggers collection
AliEMCALGeometry * fGeom
!emcal geometry
EBeamType_t fBeamType
!event beam type
TList * fOutput
!output list
TClonesArray * GetArrayFromEvent(const char *name, const char *clname=0)
Double_t fPtHard
!event pt hard
Float_t fXsection
!x-section from pythia header
Double_t fEPV0A
!event plane V0A
TString fSelectGeneratorName
Selects only events produced by a generator that has a name containing a string.
TH1 * fHistZVertexNoSel
!z vertex position (no event selection)
Double_t fEPV0
!event plane V0
TH1 * fHistEventCount
!incoming and selected events
TProfile * fHistXsectionVsPtHardNoSel
!x section from pythia header (no event selection)
Int_t fNTrials
!event trials
Container with name, TClonesArray and cuts for particles.
Bool_t fMCRejectFilter
enable the filtering of events by tail rejection
TString fCaloTriggerPatchInfoName
trigger patch info array name
Double_t fMinVz
min vertex for event selection
New centrality estimation (AliMultSelection, see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/AliMu...
void UserExec(Option_t *option)
TString fCentEst
name of the centrality estimator
TH1 * fHistTrialsVsPtHardNoSel
!total number of trials per pt hard bin after selection (no event selection)
UInt_t fTriggerSelectionBitMap
trigger selection bit map
TH1 * fHistCentrality
!event centrality distribution
const AliMCParticleIterableContainer all() const
std::vector< double > fCentBins
how many centrality bins
Bool_t fEventSelectionAfterRun
If kTRUE, the event selection is performed after Run() but before FillHistograms() ...
static Byte_t GetTrackType(const AliVTrack *t)
virtual ~AliAnalysisTaskEmcalLight()
static std::vector< double > GenerateFixedBinArray(int n, double min, double max, bool last=true)
TH1 * fHistTriggerClasses
!number of events in each trigger class
TString fCaloCellsName
name of calo cell collection
TH1 * fHistEvents
!total number of events per pt hard bin
Bool_t IsTrackInEmcalAcceptance(AliVParticle *part, Double_t edges=0.9) const
std::set< std::string > fRejectedTriggerClasses
list of accepted trigger classes
TString part
use mixed event to constrain combinatorial background
virtual Bool_t FillHistograms()
Double_t fMaxMinimumBiasPtHard
maximum pt hard for the minimum bias pt hard bin (MC)
Container for particles within the EMCAL framework.
static void GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
void AddObjectToEvent(TObject *obj, Bool_t attempt=kFALSE)
static Double_t fgkEMCalDCalPhiDivide
phi value used to distinguish between DCal and EMCal
EBeamType_t fForceBeamType
forced beam type
No centrality estimation.
virtual Bool_t IsEventSelected()
AliVCaloCells * fCaloCells
!cells
std::vector< std::string > fFiredTriggerClasses
!trigger classes fired by the current event
Bool_t fCreateHisto
whether or not create histograms
TH1 * fHistTrialsVsPtHard
!total number of trials per pt hard bin after selection
TH1 * fHistEventRejection
!book keep reasons for rejecting event
TH1 * fHistTrials
!trials from pyxsec.root
Double_t fMinPtHard
select minimum pt hard (MC)
Base task in the EMCAL framework (lighter version of AliAnalysisTaskEmcal)
EBeamType_t GetBeamType()
TH1 * fHistEventsVsPtHard
!total number of events per pt hard bin after selection
TH1 * fHistTriggerClassesNoSel
!number of events in each trigger class (no event selection)
Float_t fPtHardAndClusterPtFactor
Factor between ptHard and cluster pT to reject/accept event.
Double_t fMaxVzDiff
upper limit for distance between primary and SPD vertex
Double_t fVertex[3]
!event vertex
ECentralityEstimation_t fCentralityEstimation
Centrality estimation.
TH1 * fHistCentralityNoSel
!event centrality distribution (no event selection)
Int_t fPtHardBin
!event pt hard
AliClusterContainer * GetClusterContainer(std::string name) const
void AdoptClusterContainer(AliClusterContainer *cont)
Bool_t fIsPythia
if it is a PYTHIA production
TProfile * fHistXsection
!x section from pyxsec.root
Int_t fCentBin
!event centrality bin
Double_t fMaxCent
max centrality for event selection
ULong_t fFiredTriggerBitMap
!bit map of fired triggers
Double_t fMinNVertCont
minumum number of vertex contributors
virtual Bool_t RetrieveEventObjects()
Int_t fNVertSPDCont
!event SPD vertex number of contributors
std::set< std::string > fAcceptedTriggerClasses
list of accepted trigger classes
static Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rMin=-TMath::Pi()/2, Double_t rMax=3 *TMath::Pi()/2)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1 * fHistEventPlaneNoSel
!event plane distribution (no event selection)
Bool_t PythiaInfoFromFile(const char *currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard)
Bool_t fLocalInitialized
!whether or not the task has been already initialized
static EBeamType_t BeamTypeFromRunNumber(Int_t runnumber)
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
std::map< std::string, AliParticleContainer * > fParticleCollArray
particle/track collection array
TFile * file
TList with histograms for a given trigger.
TH1 * fHistEventsVsPtHardNoSel
!total number of events per pt hard bin after selection (no event selection)
Int_t fNVertCont
!event vertex number of contributors
Bool_t fGeneralHistograms
whether or not it should fill some general histograms
Int_t GetRunNumber(TString)
AliGenPythiaEventHeader * fPythiaHeader
!event Pythia header
Float_t fPtHardAndTrackPtFactor
Factor between ptHard and track pT to reject/accept event.
AliParticleContainer * GetParticleContainer(std::string name) const
AliAnalysisTaskEmcalLight()
TH1 * fHistEventPlane
!event plane distribution
std::map< std::string, AliClusterContainer * > fClusterCollArray
cluster collection array
EBeamType_t
Switch for the beam type.
AliVCaloTrigger * fCaloTriggers
!calo triggers
TProfile * fHistXsectionVsPtHard
!x section from pythia header
Container structure for EMCAL clusters.
Container for MC-true particles within the EMCAL framework.
TString fGeneratorName
!name of the MC generator used to produce the current event (only AOD)
TH1 * fHistZVertex
!z vertex position
void AdoptParticleContainer(AliParticleContainer *cont)
virtual Bool_t FillGeneralHistograms(Bool_t eventSelected)
Double_t fMaxVz
max vertex for event selection
Double_t fCent
!event centrality
Double_t fEPV0C
!event plane V0C
TClonesArray * fTriggerPatchInfo
!trigger patch info array
Double_t fMaxPtHard
select maximum pt hard (MC)
Old centrality estimation (AliCentrality, works only on Run-1 PbPb and pPb)
TList * OpenFile(const char *fname)
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
static Double_t GetParallelFraction(AliVParticle *part1, AliVParticle *part2)
EDataType_t fDataType
!data type (ESD or AOD)