23 #include "AliAODMCParticle.h"
24 #include "AliCentrality.h"
28 #include "AliMCParticle.h"
29 #include "AliMCEvent.h"
31 #include "AliVEvent.h"
32 #include "AliVTrack.h"
33 #include "AliVVertex.h"
46 namespace EMCalTriggerPtAnalysis {
51 AliEMCalTriggerRecJetAnalysisComponent::AliEMCalTriggerRecJetAnalysisComponent() :
53 fTrackSelection(NULL),
55 fRequestMCtrue(kFALSE),
66 fTrackSelection(NULL),
68 fRequestMCtrue(kFALSE),
88 std::map<std::string, std::string> triggerCombinations;
98 const TAxis *trackaxes[6] = {
100 DefineAxis(
"jettpt", jetptbinning ? jetptbinning : ptbinning),
107 const TAxis *trackaxes1[5] = {
115 const TAxis *jetaxes[4] = {
116 DefineAxis(
"jetpt", jetptbinning ? jetptbinning : ptbinning),
123 for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
124 const std::string name = it->first, &
title = it->second;
125 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");
126 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");
127 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");
128 fHistos->
CreateTHnSparse(Form(
"hRecJetHist%s%s", jetptstring.Data(), name.c_str()), Form(
"Reconstructed jets in %s-triggered events", name.c_str()), 4, jetaxes);
131 for(
int iaxis = 0; iaxis < 6; iaxis++)
delete trackaxes[iaxis];
148 std::vector<std::string> triggernames;
163 cont->ResetCurrentID();
165 AliVTrack *foundtrack(NULL);
166 const AliVParticle *assocMC(NULL);
167 AliCentrality *centralityHandler = data->
GetRecEvent()->GetCentrality();
168 while(reconstructedJet){
170 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name)
171 FillJetHistogram(Form(
"hRecJetHist%s%s", jetptstring.Data(), name->c_str()), reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
175 if(!
fKineCuts->IsSelected(foundtrack))
continue;
179 for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name){
180 FillHistogram(Form(
"hTrackJetHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
181 FillTrackHistogramCentrality(Form(
"hTrackJetCentralityHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, centralityHandler->GetCentralityPercentile(
"V0A"), weight);
183 FillHistogram(Form(
"hMCTrackJetHist%s%s", jetptstring.Data(), name->c_str()), assocMC, reconstructedJet, data->
GetRecEvent()->GetPrimaryVertex()->GetZ(), weight);
200 const AliVTrack*
const trk,
const AliMCEvent* evnt)
const {
201 int label = TMath::Abs(trk->GetLabel());
202 const AliVParticle *mcpart = evnt->GetTrack(label);
203 if(!mcpart)
return NULL;
204 const AliAODMCParticle *aodpart =
dynamic_cast<const AliAODMCParticle *
>(mcpart);
206 if(!aodpart->IsPhysicalPrimary())
return NULL;
208 if(!evnt->IsPhysicalPrimary(label))
return NULL;
223 double vz,
double weight) {
239 double data[4] = {TMath::Abs(recjet->
Pt()), (
fSwapEta ? -1. : 1.) * recjet->
Eta(), recjet->
Phi(), vz};
257 const TString& histname,
const AliVTrack*
const trk,
const AliEmcalJet* jet,
double centpercent,
double weight) {
260 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
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
TAxis * DefineAxis(const char *name, const AliEMCalTriggerBinningDimension *binning)
virtual void CreateHistos()
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.
AliEMCalTriggerBinningDimension * GetBinning(const char *name) const
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)
Binning definition for a certain dimension.
double GetEventWeight(const AliMCEvent *const event) const
Short_t TrackAt(Int_t idx) const
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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="")
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.
virtual bool IsTrackAccepted(AliVTrack *const trk)=0
AliJetContainer * GetJetContainerData() const
Int_t fComponentDebugLevel
Debug level for the given analysis component.