20 #include <TClonesArray.h>
21 #include <TLorentzVector.h>
24 #include "AliVCluster.h"
25 #include "AliVEvent.h"
36 namespace EMCalTriggerPtAnalysis {
41 AliEMCalTriggerClusterAnalysisComponent::AliEMCalTriggerClusterAnalysisComponent() :
67 std::map<std::string, std::string> triggerCombinations;
68 const char *triggernames[11] = {
"MinBias",
"EMCJHigh",
"EMCJLow",
"EMCGHigh",
69 "EMCGLow",
"EMCHighBoth",
"EMCHighGammaOnly",
"EMCHighJetOnly",
70 "EMCLowBoth",
"EMCLowGammaOnly",
"EMCLowJetOnly"};
72 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[0],
"min. bias events"));
73 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[1],
"jet-triggered events (high threshold)"));
74 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[2],
"jet-triggered events (low threshold)"));
75 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[3],
"gamma-triggered events (high threshold)"));
76 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[4],
"gamma-triggered events (low threshold)"));
77 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5],
"jet and gamma triggered events (high threshold)"));
78 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6],
"exclusively gamma-triggered events (high threshold)"));
79 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7],
"exclusively jet-triggered events (high threshold)"));
80 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8],
"jet and gamma triggered events (low threshold)"));
81 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9],
"exclusively gamma-triggered events (low threshold)"));
82 triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10],
"exclusively-triggered events (low threshold)"));
96 const TAxis *clusteraxes[5] = {
105 for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
106 const std::string name = it->first, &title = it->second;
107 fHistos->
CreateTHnSparse(Form(
"hClusterCalibHist%s", name.c_str()), Form(
"Calib. cluster-based histogram for %s events", title.c_str()), 5, clusteraxes,
"s");
108 fHistos->
CreateTHnSparse(Form(
"hClusterUncalibHist%s", name.c_str()), Form(
"Uncalib. cluster-based histogram for %s events", title.c_str()), 5, clusteraxes,
"s");
111 for(
int iaxis = 0; iaxis < 5; iaxis++)
delete clusteraxes[iaxis];
121 AliDebug(1, Form(
"Number of calibrated clusters: %d", data->
GetClusterContainer()->GetEntries()));
123 AliVCluster *clust(NULL);
125 std::vector<std::string> triggerNames;
127 for(
int iclust = 0; iclust < recEv->GetNumberOfCaloClusters(); iclust++){
128 clust = recEv->GetCaloCluster(iclust);
129 if(!clust->IsEMCAL())
continue;
131 for(std::vector<std::string>::iterator name = triggerNames.begin(); name != triggerNames.end(); ++name)
137 printf(
"Cluster container not found \n");
139 while((clust = dynamic_cast<AliVCluster *>(clusterIter()))){
140 if(!clust->IsEMCAL())
continue;
142 for(std::vector<std::string>::iterator name = triggerNames.begin(); name != triggerNames.end(); ++name)
157 ev->GetPrimaryVertex()->GetXYZ(xyz);
158 clust->GetMomentum(vec, xyz);
159 double infs[5] = {clust->E(), vec.Eta(), vec.Phi(), xyz[2], inMB ? 1. : 0.};
AliVEvent * GetRecEvent() const
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Declaration of class AliEMCalTriggerAnaTriggerDecision, a container for trigger decision in EMCAL-tri...
void FillHistogram(const TString &histname, const AliVCluster *clust, AliVEvent *ev, Bool_t inMB)
ETriggerMethod_t fTriggerMethod
Method used for the trigger decision.
void GetMachingTriggerNames(std::vector< std::string > &triggernames, ETriggerMethod_t usePatches)
AliCutValueRange< double > fEnergyRange
Allowed energy range for the cluster.
TAxis * DefineAxis(const char *name, const AliEMCalTriggerBinningDimension *binning)
virtual void Process(const AliEMCalTriggerEventData *const data)
void SetLimits(t min, t max)
const TClonesArray * GetClusterContainer() const
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="")
AliEMCalHistoContainer * fHistos
Histogram container of the analysis component.
const AliEMCalTriggerAnaTriggerDecision * fTriggerDecision
Trigger decision handler.
Analysis component for EMCAL clusters.
Base class for analysis components in the analysis of EMCAL-triggered events.
virtual void CreateHistos()
AliEMCalTriggerClusterAnalysisComponent()
AliEMCalTriggerBinningDimension * GetBinning(const char *name) const
const AliEMCalTriggerBinningComponent * fBinning
Global binning handler.
virtual void CreateHistos()
Analysis component for EMCAL clusters in events.
bool IsInRange(t value) const