33 #include <fastjet/ClusterSequence.hh>
34 #include <fastjet/contrib/Nsubjettiness.hh>
35 #include <fastjet/contrib/SoftDrop.hh>
39 #include <TLorentzVector.h>
44 #include "AliAODEvent.h"
45 #include "AliAODInputHandler.h"
46 #include "AliAnalysisManager.h"
59 #include "AliVCluster.h"
60 #include "AliVParticle.h"
62 #ifdef EXPERIMENTAL_JETCONSTITUENTS
72 namespace EmcalTriggerJets {
80 fReclusterizer(kCAAlgo),
81 fTriggerSelectionBits(AliVEvent::kAny),
82 fTriggerSelectionString(
""),
83 fUseDownscaleWeight(false)
94 fReclusterizer(kCAAlgo),
95 fTriggerSelectionBits(AliVEvent::kAny),
96 fTriggerSelectionString(
""),
97 fUseDownscaleWeight(false)
100 DefineOutput(2, TTree::Class());
112 clusterenergybinning(200, 0., 200),
113 timebinning(1000, -500., 500.),
114 m02binning(100, 0., 1.),
115 ncellbinning(101, -0.5, 100.5);
117 fQAHistos->
CreateTH2(
"hClusterConstE",
"EMCAL cluster energy vs jet pt; p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
118 fQAHistos->
CreateTH2(
"hClusterConstTime",
"EMCAL cluster time vs. jet pt; p_{t, jet} (GeV/c); t_{cl} (ns)", jetptbinning, timebinning);
119 fQAHistos->
CreateTH2(
"hClusterConstM02",
"EMCAL cluster M02 vs. jet pt; p{t, jet} (GeV/c); M02", jetptbinning, m02binning);
120 fQAHistos->
CreateTH2(
"hClusterConstNcell",
"EMCAL cluster ncell vs. jet pt; p{t, jet} (GeV/c); Number of cells", jetptbinning, ncellbinning);
123 #ifdef EXPERIMENTAL_JETCONSTITUENTS
124 fQAHistos->
CreateTH2(
"hChargedConstituentPt",
"charged constituent pt vs jet pt (via constituent map); p_{t,jet} (GeV/c); p_{t,ch} (GeV/c)", jetptbinning, clusterenergybinning);
125 fQAHistos->
CreateTH2(
"hChargedIndexPt",
"charged constituent pt vs jet pt (via index map); p_{t, jet} (GeV/c); p_{t, ch} (GeV/c)", jetptbinning, clusterenergybinning);
127 fQAHistos->
CreateTH2(
"hClusterConstituentEDefault",
"cluster constituent default energy vs. jet pt (va constituent map); p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
128 fQAHistos->
CreateTH2(
"hClusterConstituentENLC",
"cluster constituent non-linearity-corrected energy vs. jet pt (va constituent map); p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
129 fQAHistos->
CreateTH2(
"hClusterConstituentEHC",
"cluster constituent hadronic-corrected energy vs. jet pt (va constituent map); p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
130 fQAHistos->
CreateTH2(
"hClusterIndexENLC",
"cluster constituent non-linearity-corrected energy vs. jet pt (via index map); p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
131 fQAHistos->
CreateTH2(
"hClusterIndexEHC",
"cluster constituent hadronic-corrected energy vs. jet pt (via index map); p_{t, jet} (GeV/c); E_{cl} (GeV)", jetptbinning, clusterenergybinning);
138 varnames[0] =
"Radius";
139 varnames[1] =
"EventWeight";
140 varnames[2] =
"PtJetRec";
141 varnames[3] =
"PtJetSim";
142 varnames[4] =
"EJetRec";
143 varnames[5] =
"EJetSim";
144 varnames[6] =
"RhoPtRec";
145 varnames[7] =
"RhoPtSim";
146 varnames[8] =
"RhoMassRec";
147 varnames[9] =
"RhoMassSim";
148 varnames[10] =
"AreaRec";
149 varnames[11] =
"AreaSim";
150 varnames[12] =
"NEFRec";
151 varnames[13] =
"NEFSim";
152 varnames[14] =
"MassRec";
153 varnames[15] =
"MassSim";
154 varnames[16] =
"ZgMeasured";
155 varnames[17] =
"ZgTrue";
156 varnames[18] =
"RgMeasured";
157 varnames[19] =
"RgTrue";
158 varnames[20] =
"MgMeasured";
159 varnames[21] =
"MgTrue";
160 varnames[22] =
"PtgMeasured";
161 varnames[23] =
"PtgTrue";
162 varnames[24] =
"MugMeasured";
163 varnames[25] =
"MugTrue";
164 varnames[26] =
"OneSubjettinessMeasured";
165 varnames[27] =
"OneSubjettinessTrue";
166 varnames[28] =
"TwoSubjettinessMeasured";
167 varnames[29] =
"TwoSubjettinessTrue";
168 varnames[30] =
"AngularityMeasured";
169 varnames[31] =
"AngularityTrue";
170 varnames[32] =
"PtDMeasured";
171 varnames[33] =
"PtDTrue";
172 varnames[34] =
"NCharged";
173 varnames[35] =
"NNeutral";
174 varnames[36] =
"NConstTrue";
175 varnames[37] =
"NDroppedMeasured";
176 varnames[38] =
"NDroppedTrue";
178 for(
int ib = 0; ib <
kTNVar; ib++){
201 TString rhoTagData = datajets ? TString::Format(
"R%02d", static_cast<Int_t>(datajets->
GetJetRadius() * 10.)) :
"",
202 rhoTagMC = mcjets ? TString::Format(
"R%02d", static_cast<Int_t>(mcjets->
GetJetRadius() * 10.)) :
"";
208 AliDebugStream(2) <<
"Found rho parameter for reconstructed pt: " << (rhoPtRec ?
"yes" :
"no") <<
", value: " << (rhoPtRec ? rhoPtRec->GetVal() : 0.) << std::endl;
209 AliDebugStream(2) <<
"Found rho parameter for sim pt: " << (rhoPtSim ?
"yes" :
"no") <<
", value: " << (rhoPtSim ? rhoPtSim->GetVal() : 0.) << std::endl;
210 AliDebugStream(2) <<
"Found rho parameter for reconstructed Mass: " << (rhoMassRec ?
"yes" :
"no") <<
", value: " << (rhoMassRec ? rhoMassRec->GetVal() : 0.) << std::endl;
211 AliDebugStream(2) <<
"Found rho parameter for sim Mass: " << (rhoMassSim ?
"yes" :
"no") <<
", value: " << (rhoMassSim ? rhoMassSim->GetVal() : 0.) << std::endl;
213 AliDebugStream(1) <<
"Inspecting jet radius " << (datajets ? datajets->
GetJetRadius() : mcjets->
GetJetRadius()) << std::endl;
231 AliDebugStream(1) <<
"Found trigger decision object: " << (mctrigger ?
"yes" :
"no") << std::endl;
234 AliErrorStream() <<
"Trigger decision container not found in event - not possible to select EMCAL triggers" << std::endl;
243 if(rhoPtRec) rhoparameters[0] = rhoPtRec->GetVal();
244 if(rhoPtSim) rhoparameters[1] = rhoPtSim->GetVal();
245 if(rhoMassRec) rhoparameters[2] = rhoMassRec->GetVal();
246 if(rhoMassSim) rhoparameters[3] = rhoMassSim->GetVal();
258 nsubjettinessSettings.
fBeta = 1.;
259 nsubjettinessSettings.
fRadius = 0.4;
261 std::set<AliEmcalJet *> taglist;
263 AliDebugStream(1) <<
"In data jets branch: found" << datajets->
GetNJets() <<
" jets, " << datajets->
GetNAcceptedJets() <<
" were accepted\n";
264 AliDebugStream(1) <<
"Having MC information: " << (mcjets ? TString::Format(
"yes, with %d jets", mcjets->
GetNJets()) :
"no") << std::endl;
265 for(
auto jet : datajets->
accepted()) {
266 double pt = jet->Pt(), pz = jet->Pz(), E = jet->E(), M = TMath::Sqrt(E*E - pt*pt - pz*pz);
267 AliDebugStream(2) <<
"Next jet: pt:" << jet->Pt() <<
", E: " << E <<
", pz: " << pz <<
", M(self): " << M <<
"M(fj)" << jet->M() << std::endl;
271 if(!associatedJet)
continue;
272 taglist.insert(associatedJet);
278 ptd[2] = {
MakePtD(*jet, tracks, clusters),
MakePtD(*associatedJet, particles,
nullptr)};
279 FillTree(datajets->
GetJetRadius(), weight, jet, associatedJet, &(structureData.
fSoftDrop), &(structureMC.fSoftDrop), &(structureData.
fNsubjettiness), &(structureMC.fNsubjettiness), angularity, ptd, rhoparameters);
281 AliErrorStream() <<
"Error in reclusterization - skipping jet" << std::endl;
283 AliErrorStream() <<
"Error in substructure observable - skipping jet" << std::endl;
290 ptd[2] = {
MakePtD(*jet, tracks, clusters), 0.};
291 FillTree(datajets->
GetJetRadius(), weight, jet,
nullptr, &(structure.
fSoftDrop),
nullptr, &(structure.
fNsubjettiness),
nullptr, angularity, ptd, rhoparameters);
293 AliErrorStream() <<
"Error in reclusterization - skipping jet" << std::endl;
295 AliErrorStream() <<
"Error in substructure observable - skipping jet" << std::endl;
305 AliDebugStream(1) <<
"In MC pure jet branch: found " << mcjets->
GetNJets() <<
" jets, " << mcjets->
GetNAcceptedJets() <<
" were accepted\n";
308 if(taglist.find(mcjet) != taglist.end())
continue;
312 ptd[2] = {0.,
MakePtD(*mcjet, particles,
nullptr)};
313 FillTree(mcjets->
GetJetRadius(), weight,
nullptr, mcjet,
nullptr, &(structure.
fSoftDrop),
nullptr, &(structure.
fNsubjettiness), angularity, ptd, rhoparameters);
315 AliErrorStream() <<
"Error in reclusterization - skipping jet" << std::endl;
317 AliErrorStream() <<
"Error in substructure observable - skipping jet" << std::endl;
402 if(dataSubjettiness) {
428 const int kClusterOffset = 30000;
429 std::vector<fastjet::PseudoJet> constituents;
431 AliDebugStream(2) <<
"Make new jet substrucutre for " << (isMC ?
"MC" :
"data") <<
" jet: Number of tracks " << jet.
GetNumberOfTracks() <<
", clusters " << jet.
GetNumberOfClusters() << std::endl;
433 AliVTrack *track =
static_cast<AliVTrack *
>(jet.
TrackAt(itrk, tracks->GetArray()));
434 fastjet::PseudoJet constituentTrack(track->Px(), track->Py(), track->Pz(), track->E());
435 constituentTrack.set_user_index(jet.
TrackAt(itrk));
436 constituents.push_back(constituentTrack);
441 AliVCluster *cluster = jet.
ClusterAt(icl, clusters->GetArray());
442 TLorentzVector clustervec;
444 fastjet::PseudoJet constituentCluster(clustervec.Px(), clustervec.Py(), clustervec.Pz(), cluster->GetHadCorrEnergy());
445 constituentCluster.set_user_index(jet.
ClusterAt(icl) + kClusterOffset);
446 constituents.push_back(constituentCluster);
450 AliDebugStream(3) <<
"Found " << constituents.size() <<
" constituents for jet with pt=" << jet.
Pt() <<
" GeV/c" << std::endl;
451 if(!constituents.size())
454 fastjet::JetDefinition jetdef(fastjet::antikt_algorithm, jetradius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
455 std::vector<fastjet::PseudoJet> outputjets;
457 fastjet::ClusterSequence jetfinder(constituents, jetdef);
458 outputjets = jetfinder.inclusive_jets(0);
461 }
catch (fastjet::Error &e) {
462 AliErrorStream() <<
" FJ Exception caught: " << e.message() << std::endl;
468 fastjet::contrib::SoftDrop softdropAlgorithm(cutparameters.
fBeta, cutparameters.
fZ);
469 softdropAlgorithm.set_verbose_structure(kTRUE);
470 std::unique_ptr<fastjet::contrib::Recluster> reclusterizer(
new fastjet::contrib::Recluster(cutparameters.
fRecluserAlgo, 1,
true));
471 softdropAlgorithm.set_reclustering(kTRUE, reclusterizer.get());
472 AliDebugStream(4) <<
"Jet has " << jet.constituents().size() <<
" constituents" << std::endl;
473 fastjet::PseudoJet groomed = softdropAlgorithm(jet);
477 groomed.structure_of<fastjet::contrib::SoftDrop>().delta_R(),
479 groomed.structure_of<fastjet::contrib::SoftDrop>().mu(),
480 groomed.structure_of<fastjet::contrib::SoftDrop>().dropped_count()});
486 fastjet::contrib::Nsubjettiness (1,fastjet::contrib::KT_Axes(),fastjet::contrib::NormalizedCutoffMeasure(cut.
fBeta, cut.
fRadius, 1e100)).result(jet),
487 fastjet::contrib::Nsubjettiness (2,fastjet::contrib::KT_Axes(),fastjet::contrib::NormalizedCutoffMeasure(cut.
fBeta, cut.
fRadius, 1e100)).result(jet)
495 TVector3 jetvec(jet.
Px(), jet.
Py(), jet.
Pz());
499 AliVParticle *track = jet.
TrackAt(itrk, tracks->GetArray());
501 AliErrorStream() <<
"Associated constituent particle / track not found\n";
504 TVector3 trackvec(track->Px(), track->Py(), track->Pz());
506 num += track->Pt() * trackvec.DrEtaPhi(jetvec);
512 AliVCluster *clust = jet.
ClusterAt(icl, clusters->GetArray());
514 AliErrorStream() <<
"Associated constituent cluster not found\n";
517 TLorentzVector clusterp;
520 num += clusterp.Pt() * clusterp.Vect().DrEtaPhi(jetvec);
521 den += clusterp.Pt();
533 AliVParticle *trk = jet.
TrackAt(itrk, particles->GetArray());
535 AliErrorStream() <<
"Associated constituent particle / track not found\n";
538 num += trk->Pt() * trk->Pt();
544 AliVCluster *clust = jet.
ClusterAt(icl, clusters->GetArray());
546 AliErrorStream() <<
"Associated constituent cluster not found\n";
549 TLorentzVector clusterp;
551 num += clusterp.Pt() * clusterp.Pt();
552 den += clusterp.Pt();
555 return TMath::Sqrt(num)/den;
560 AliVCluster *clust = jet->
ClusterAt(icl, clusters->GetArray());
561 AliDebugStream(3) <<
"cluster time " << clust->GetTOF() << std::endl;
567 #ifdef EXPERIMENTAL_JETCONSTITUENTS
573 #ifdef EXPERIMENTAL_JETCONSTITUENTS
576 AliVParticle *part = jet->
TrackAt(itrk, cont->GetArray());
581 AliDebugStream(2) <<
"Jet: Number of particle constituents: " << jet->
GetParticleConstituents().GetEntriesFast() << std::endl;
584 AliDebugStream(3) <<
"Found particle constituent with pt " << part->
Pt() <<
", from VParticle " << part->
GetParticle()->Pt() << std::endl;
589 AliDebugStream(2) <<
"Jet: Number of cluster constituents: " << jet->
GetClusterConstituents().GetEntriesFast() << std::endl;
592 AliDebugStream(3) <<
"Found cluster constituent with energy " << clust->
E() <<
" using energy definition " <<
static_cast<int>(clust->
GetDefaultEnergyType()) << std::endl;
604 AliInputEventHandler *inputhandler =
static_cast<AliInputEventHandler *
>(mgr->GetInputEventHandler());
606 if(inputhandler->IsA() == AliAODInputHandler::Class()){
607 std::cout <<
"Analysing AOD events\n";
610 std::cout <<
"Analysing ESD events\n";
615 mgr->AddTask(treemaker);
621 particles->SetMinPt(0.);
630 mcjets->SetName(
"mcjets");
636 std::cout <<
"Track container name: " << tracks->GetName() << std::endl;
637 tracks->SetMinPt(0.15);
639 if(jettype ==
kFull){
640 std::cout <<
"Using full jets ..." << std::endl;
642 std::cout <<
"Cluster container name: " << clusters->GetName() << std::endl;
646 std::cout <<
"Using charged jets ... " << std::endl;
656 datajets->SetName(
"datajets");
663 TString triggerstring(trigger);
664 if(triggerstring.Contains(
"INT7")) {
666 }
else if(triggerstring.Contains(
"EJ1")) {
669 }
else if(triggerstring.Contains(
"EJ2")) {
676 TString outputfile = mgr->GetCommonFileName();
677 outputfile += TString::Format(
":JetSubstructure_R%02d_%s",
int(jetradius * 10.), trigger);
678 mgr->ConnectInput(treemaker, 0, mgr->GetCommonInputContainer());
679 mgr->ConnectOutput(treemaker, 1, mgr->CreateContainer(
"JetSubstructureHistos_" + TString::Format(
"R%0d_",
int(jetradius * 10.)) + trigger, AliEmcalList::Class(), AliAnalysisManager::kOutputContainer, outputfile));
680 mgr->ConnectOutput(treemaker, 2, mgr->CreateContainer(
"JetSubstuctureTree_" + TString::Format(
"R%0d_",
int(jetradius * 10.)) + trigger, TTree::Class(), AliAnalysisManager::kOutputContainer, Form(
"JetSubstructureTree_R%02d_%s.root", static_cast<int>(jetradius*10.), trigger)));
TTree * fJetSubstructureTree
! Tree with jet substructure information
Double_t fBeta
Cut on Beta.
bool IsEventSelected(const char *name) const
Checks whether the events is selected for a given trigger type.
void SetTriggerString(TString triggerstring)
Class creating a linear binning, used in the histogram manager.
Double_t MakePtD(const AliEmcalJet &jet, const AliParticleContainer *const particles, const AliClusterContainer *const clusters) const
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t fRg
Groomed jet radius.
virtual double E() const
Access to constituent energy.
static AliEmcalDownscaleFactorsOCDB * Instance()
virtual void UserCreateOutputObjects()
AliNSubjettinessDefinition fSubjettinessSettings
Container with name, TClonesArray and cuts for particles.
void SetUseAliAnaUtils(Bool_t b, Bool_t bRejPilup=kTRUE)
AliJetSubstructureData MakeJetSubstructure(const AliEmcalJet &jet, double jetradius, const AliParticleContainer *tracks, const AliClusterContainer *clusters, const AliJetSubstructureSettings &settings) const
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
Fill a 2D histogram within the container.
void SetRun(int runnumber)
Double_t fMug
Mass Drop parameter.
Int_t ClusterAt(Int_t idx) const
TString fTriggerSelectionString
Trigger selection string.
Tree with jet substructure information.
AliSoftDropParameters fSoftDrop
AliJetContainer * AddJetContainer(const char *n, TString defaultCutType, Float_t jetRadius=0.4)
const std::vector< PWG::JETFW::AliEmcalParticleJetConstituent > & GetParticleConstituents() const
Get container with particle (track / MC particle) constituents.
Structure for results from the soft drop algorithm.
Double_t fZg
Groomed jet z.
virtual bool Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
Double_t GetDownscaleFactorForTriggerClass(const TString &trigger) const
void SetVzRange(Double_t min, Double_t max)
AliVCluster::VCluUserDefEnergy_t GetDefaultEnergyType() const
Get the energy definition used to calculate the cluster energy in the jetfinder.
Double_t fPtg
Groomed jet pt.
Double_t fMg
Groomed jet mass.
AliClusterContainer * AddClusterContainer(const char *n)
Create new cluster container and attach it to the task.
Double_t fJetTreeData[kTNVar]
Variable storage for the jet tree.
fastjet::JetAlgorithm fRecluserAlgo
Reclusterization algorithm.
UShort_t GetNumberOfConstituents() const
Container for particles within the EMCAL framework.
Int_t GetDefaultClusterEnergy() const
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
static AliAnalysisTaskEmcalJetSubstructureTree * AddEmcalJetSubstructureTreeMaker(Bool_t isMC, Bool_t isData, Double_t jetradius, JetType_t jettype, AliJetContainer::ERecoScheme_t recombinationScheme, const char *name)
TPC fiducial acceptance (each eta edge narrowed by jet R)
Double_t fTwoSubjettiness
2-subjettiness
AliRhoParameter * GetRhoFromEvent(const char *name)
AliSoftdropDefinition fSoftdropSettings
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
Create a new TH2 within the container.
UShort_t GetNumberOfClusters() const
void SetJetPtCut(Float_t cut)
THashList * GetListOfHistograms() const
Get the list of histograms.
Int_t fNDropped
Number of dropped subjets.
AliNSubjettinessParameters MakeNsubjettinessParameters(const fastjet::PseudoJet &jet, const AliNSubjettinessDefinition &cut) const
Double_t fOneSubjettiness
1-subjettiness
Definition for the algorithm obtaining the softdrop parameters.
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
virtual ~AliAnalysisTaskEmcalJetSubstructureTree()
const AliVCluster * GetCluster() const
Get the underlying cluster.
Bool_t fUseDownscaleWeight
Use 1/downscale as weight.
virtual void RunChanged(Int_t newrun)
Process tasks relevant when a file with a different run number is processed.
AliMCParticleContainer * AddMCParticleContainer(const char *n)
Create new container for MC particles and attach it to the task.
Double_t MakeAngularity(const AliEmcalJet &jet, const AliParticleContainer *tracks, const AliClusterContainer *clusters) const
Implementation of a jet constituent for constituent clusters.
Container for trigger decision object.
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)
THistManager * fQAHistos
! QA histos
Double_t fSDZCut
Soft drop z-cut.
void SetTriggerBits(UInt_t triggersel)
Double_t fSDBetaCut
Soft drop beta cut.
void DoConstituentQA(const AliEmcalJet *jet, const AliParticleContainer *tracks, const AliClusterContainer *clusters)
Float_t GetJetRadius() const
const std::vector< PWG::JETFW::AliEmcalClusterJetConstituent > & GetClusterConstituents() const
Get container with cluster constituents.
virtual double Pt() const
Access to transverse momentum.
AliEmcalList * fOutput
!output list
Reclusterizer_t fReclusterizer
Reclusterizer method.
Double_t fVertex[3]
!event vertex
AliTrackContainer * AddTrackContainer(const char *n)
Create new track container and attach it to the task.
AliTrackContainer * GetTrackContainer(Int_t i=0) const
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
void FillTree(double r, double weight, const AliEmcalJet *datajet, const AliEmcalJet *mcjet, AliSoftDropParameters *dataSoftdrop, AliSoftDropParameters *mcsoftdrop, AliNSubjettinessParameters *dataSubjettiness, AliNSubjettinessParameters *mcSubjettiness, Double_t *angularity, Double_t *ptd, Double_t *rhoparameters)
Represent a jet reconstructed using the EMCal jet framework.
Container class for histograms.
AliSoftDropParameters MakeSoftDropParameters(const fastjet::PseudoJet &jet, const AliSoftdropDefinition &cut) const
void UserCreateOutputObjects()
Main initialization function on the worker.
AliAnalysisTaskEmcalJetSubstructureTree()
const AliJetIterableContainer accepted() const
void SetDefaultClusterEnergy(Int_t d)
Container structure for EMCAL clusters.
const AliVParticle * GetParticle() const
EMCal fiducial acceptance (each eta, phi edge narrowed by jet R)
Container for jet within the EMCAL jet framework.
AliNSubjettinessParameters fNsubjettiness
TList * OpenFile(const char *fname)
void SetClusHadCorrEnergyCut(Double_t cut)
UInt_t fTriggerSelectionBits
Trigger selection bits.
static TString TrackContainerNameFactory(Bool_t isAOD)
Get name of the default track container.
static TString ClusterContainerNameFactory(Bool_t isAOD)
Get name of the default cluster container.