21 #include "AliAODMCParticle.h"
22 #include "AliEmcalJet.h"
23 #include "AliJetContainer.h"
25 #include "AliMCParticle.h"
26 #include "AliMCEvent.h"
27 #include "AliParticleContainer.h"
28 #include "AliVEvent.h"
29 #include "AliVParticle.h"
30 #include "AliVVertex.h"
44 namespace EMCalTriggerPtAnalysis {
49 AliEMCalTriggerMCJetAnalysisComponent::AliEMCalTriggerMCJetAnalysisComponent():
75 std::map<std::string, std::string> triggerCombinations;
76 const char *triggernames[11] = {
"MinBias",
"EMCJHigh",
"EMCJLow",
"EMCGHigh",
77 "EMCGLow",
"EMCHighBoth",
"EMCHighGammaOnly",
"EMCHighJetOnly",
78 "EMCLowBoth",
"EMCLowGammaOnly",
"EMCLowJetOnly"};
80 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[0],
"min. bias events"));
81 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[1],
"jet-triggered events (high threshold)"));
82 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[2],
"jet-triggered events (low threshold)"));
83 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[3],
"gamma-triggered events (high threshold)"));
84 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[4],
"gamma-triggered events (low threshold)"));
85 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5],
"jet and gamma triggered events (high threshold)"));
86 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6],
"exclusively gamma-triggered events (high threshold)"));
87 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7],
"exclusively jet-triggered events (high threshold)"));
88 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8],
"jet and gamma triggered events (low threshold)"));
89 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9],
"exclusively gamma-triggered events (low threshold)"));
90 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10],
"exclusively-triggered events (low threshold)"));
99 const TAxis *trackaxes[6] = {
101 DefineAxis(
"jettpt", jetptbinning ? jetptbinning : ptbinning),
108 const TAxis *jetaxes[4] = {
109 DefineAxis(
"jetpt", jetptbinning ? jetptbinning : ptbinning),
116 for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
117 const std::string name = it->first, &title = it->second;
118 fHistos->
CreateTHnSparse(Form(
"hParticleJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Track-based data for tracks in jets in %s events", title.c_str()), 6, trackaxes,
"s");
119 fHistos->
CreateTHnSparse(Form(
"hMCJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Reconstructed jets in %s-triggered events", name.c_str()), 4, jetaxes);
122 for(
int iaxis = 0; iaxis < 6; iaxis++)
delete trackaxes[iaxis];
133 AliError(
"No Jet container for MC found");
136 std::vector<std::string> triggernames;
146 AliEmcalJet *reconstructedJet = cont->GetNextAcceptJet(0);
147 AliAODMCParticle *foundtrack(NULL);
148 while(reconstructedJet){
150 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name)
151 FillJetHistogram(Form(
"hMCJetHist%s%s", jetptstring.Data(), name->c_str()), reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
153 for(
int ipart = 0; ipart < reconstructedJet->GetNumberOfTracks(); ipart++){
154 foundtrack =
dynamic_cast<AliAODMCParticle *
>(reconstructedJet->TrackAt(ipart, cont->GetParticleContainer()->GetArray()));
156 if(!foundtrack->Charge())
continue;
157 if(!foundtrack->IsPhysicalPrimary())
continue;
159 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name){
160 FillHistogram(Form(
"hParticleJetHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
164 reconstructedJet = cont->GetNextAcceptJet();
177 const TString& histname,
const AliVParticle* track,
const AliEmcalJet* jet,
178 double vz,
double weight) {
180 double data[6] = {TMath::Abs(track->Pt()), TMath::Abs(jet->Pt()), track->Eta(), track->Phi(), vz,
fTriggerDecision->
IsMinBias() ? 1. : 0.};
192 const TString& histname,
const AliEmcalJet* recjet,
double vz,
double weight) {
193 double data[4] = {TMath::Abs(recjet->Pt()), recjet->Eta(), recjet->Phi(), vz};
AliVEvent * GetRecEvent() const
bool IsSelected(const AliVParticle *const track) const
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Weight handler for the analysis of high- tracks in EMCAL-triggered events.
Declaration of class AliEMCalTriggerAnaTriggerDecision, a container for trigger decision in EMCAL-tri...
virtual void CreateHistos()
const AliEMCalTriggerWeightHandler * fWeightHandler
Event weight handler.
void GetMachingTriggerNames(std::vector< std::string > &triggernames, ETriggerMethod_t usePatches)
TAxis * DefineAxis(const char *name, const AliEMCalTriggerBinningDimension *binning)
AliEMCalTriggerMCJetAnalysisComponent()
void FillTHnSparse(const char *name, const double *x, double weight=1.)
void CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
Double_t fMinimumJetPt
Min. request for the jet.
void FillJetHistogram(const TString &histname, const AliEmcalJet *recjet, double vz, double weight)
Analysis component for particles in jets at generator level.
AliEMCalHistoContainer * fHistos
Histogram container of the analysis component.
const AliEMCalTriggerAnaTriggerDecision * fTriggerDecision
Trigger decision handler.
Definition of class AliEMCalTriggerMCJetAnalysisComponent.
const AliEMCalTriggerKineCuts * fKineCuts
Kinematical cuts for tracks and particle selection.
Base class for analysis components in the analysis of EMCAL-triggered events.
ETriggerMethod_t fTriggerMethod
Method used to select triggered events.
double GetEventWeight(const AliMCEvent *const event) const
AliEMCalTriggerBinningDimension * GetBinning(const char *name) const
virtual void Process(const AliEMCalTriggerEventData *const data)
AliJetContainer * GetJetContainerMC() const
void FillHistogram(const TString &histname, const AliVParticle *track, const AliEmcalJet *jet, double vz, double weight)
const AliEMCalTriggerBinningComponent * fBinning
Global binning handler.
virtual void CreateHistos()
AliMCEvent * GetMCEvent() const