24 #include "AliAODMCParticle.h" 25 #include "AliCentrality.h" 29 #include "AliMCParticle.h" 30 #include "AliMCEvent.h" 32 #include "AliVEvent.h" 33 #include "AliVTrack.h" 34 #include "AliVVertex.h" 52 AliEMCalTriggerRecJetAnalysisComponent::AliEMCalTriggerRecJetAnalysisComponent() :
54 fTrackSelection(NULL),
56 fRequestMCtrue(kFALSE),
89 std::map<std::string, std::string> triggerCombinations;
99 const TAxis *trackaxes[6] = {
101 DefineAxis(
"jettpt", jetptbinning ? *jetptbinning : *ptbinning),
108 const TAxis *trackaxes1[5] = {
110 DefineAxis(
"jetpt", jetptbinning ? *jetptbinning : *ptbinning),
116 const TAxis *jetaxes[4] = {
117 DefineAxis(
"jetpt", jetptbinning ? *jetptbinning : *ptbinning),
124 for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
125 const std::string name = it->first, &
title = it->second;
126 fHistos->
CreateTHnSparse(Form(
"hTrackJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Track-based data for tracks in jets in %s events",
title.c_str()), 6, trackaxes,
"s");
127 fHistos->
CreateTHnSparse(Form(
"hTrackJetCentralityHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Track-based histogram for tracks in jets in %s events and centrality",
title.c_str()), 5, trackaxes1,
"s");
128 fHistos->
CreateTHnSparse(Form(
"hMCTrackJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Track-based data for tracks in jets in %s events with MC kinematics",
title.c_str()), 6, trackaxes,
"s");
129 fHistos->
CreateTHnSparse(Form(
"hRecJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Reconstructed jets in %s-triggered events", name.c_str()), 4, jetaxes);
132 for(
int iaxis = 0; iaxis < 6; iaxis++)
delete trackaxes[iaxis];
149 std::vector<std::string> triggernames;
164 cont->ResetCurrentID();
166 AliVTrack *foundtrack(NULL);
167 const AliVParticle *assocMC(NULL);
168 AliCentrality *centralityHandler = data->
GetRecEvent()->GetCentrality();
169 while(reconstructedJet){
171 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name)
172 FillJetHistogram(Form(
"hRecJetHist%s%s", jetptstring.Data(), name->c_str()), reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
176 if(!
fKineCuts->IsSelected(foundtrack))
continue;
180 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name){
181 FillHistogram(Form(
"hTrackJetHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
182 FillTrackHistogramCentrality(Form(
"hTrackJetCentralityHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, centralityHandler->GetCentralityPercentile(
"V0A"), weight);
184 FillHistogram(Form(
"hMCTrackJetHist%s%s", jetptstring.Data(), name->c_str()), assocMC, reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
201 const AliVTrack*
const trk,
const AliMCEvent* evnt)
const {
202 int label = TMath::Abs(trk->GetLabel());
203 const AliVParticle *mcpart = evnt->GetTrack(label);
204 if(!mcpart)
return NULL;
205 const AliAODMCParticle *aodpart =
dynamic_cast<const AliAODMCParticle *
>(mcpart);
207 if(!aodpart->IsPhysicalPrimary())
return NULL;
209 if(!evnt->IsPhysicalPrimary(label))
return NULL;
224 double vz,
double weight) {
240 double data[4] = {TMath::Abs(recjet->
Pt()), (
fSwapEta ? -1. : 1.) * recjet->
Eta(), recjet->
Phi(), vz};
258 const TString& histname,
const AliVTrack*
const trk,
const AliEmcalJet* jet,
double centpercent,
double weight) {
261 double data[5] = { TMath::Abs(trk->Pt()), TMath::Abs(jet->
Pt()), (
fSwapEta ? -1. : 1.) * trk->Eta(), centpercent, jet->
DeltaR(trk)};
AliVEvent * GetRecEvent() const
void PrintTriggerNames(const std::vector< std::string > &, const std::string &componentName) const
Class creating a linear binning, used in the histogram manager.
void GetMachingTriggerNames(std::vector< std::string > &triggernames) const
Double_t fMinimumJetPt
Minimum jet .
Analysis component for tracks in reconstructed jets.
Bool_t fSwapEta
Swap eta sign on request.
const AliEMCalTriggerWeightHandler * fWeightHandler
Event weight handler.
virtual void Process(const AliEMCalTriggerEventData *const data)
void FillTrackHistogramCentrality(const TString &histname, const AliVTrack *const trk, const AliEmcalJet *jet, double centpercent, double weight)
virtual ~AliEMCalTriggerRecJetAnalysisComponent()
bool HasMinBiasTrigger() const
TBinning * GetBinning(const char *name) const
Interface for binnings used by the histogram handler.
virtual void CreateHistos()
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
Declaration of the analysis component on reconstructed jets.
AliParticleContainer * GetParticleContainer() const
Declaration of a management class for trigger classes.
void FillTHnSparse(const char *name, const double *x, double weight=1., Option_t *opt="")
void FillHistogram(const TString &histname, const AliVParticle *track, const AliEmcalJet *jet, double vz, double weight)
void GetAllTriggerNamesAndTitles(std::map< std::string, std::string > &triggers) const
Bool_t fRequestMCtrue
Request MC true track.
THistManager * fHistos
Histogram container of the analysis component.
const AliEMCalTriggerAnaClassManager * fTriggerClassManager
Global trigger class manager.
AliEmcalJet * GetNextAcceptJet()
Double_t DeltaR(const AliVParticle *part) const
const AliEMCalTriggerKineCuts * fKineCuts
Kinematical cuts for tracks and particle selection.
Base class for analysis components in the analysis of EMCAL-triggered events.
void FillJetHistogram(const TString &histname, const AliEmcalJet *recjet, double vz, double weight)
double GetEventWeight(const AliMCEvent *const event) const
virtual PWG::EMCAL::AliEmcalTrackSelResultPtr IsTrackAccepted(AliVTrack *const trk)=0
Interface for track selection code.
Analysis of high- tracks in triggered events.
AliEMCalTriggerRecJetAnalysisComponent()
Represent a jet reconstructed using the EMCal jet framework.
Simple event container within the high- track analysis.
THnSparse * CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
Create a new THnSparse within the container.
const AliEMCalTriggerBinningComponent * fBinning
Global binning handler.
virtual void CreateHistos()
Event Data used in exchange to the different analysis components.
AliMCEvent * GetMCEvent() const
Container for jet within the EMCAL jet framework.
const AliVParticle * IsMCTrueTrack(const AliVTrack *const trk, const AliMCEvent *evnt) const
AliEmcalTrackSelection * fTrackSelection
Track selection cuts used in the analysis.
TAxis * DefineAxis(const char *name, const TBinning &binning)
AliJetContainer * GetJetContainerData() const
Int_t fComponentDebugLevel
Debug level for the given analysis component.