#include <map>
#include <string>
#include <vector>
#include <TAxis.h>
#include <TClonesArray.h>
#include <TLorentzVector.h>
#include "AliLog.h"
#include "AliVCluster.h"
#include "AliVEvent.h"
#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerAnaTriggerDecision.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerClusterAnalysisComponent.h"
ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerClusterAnalysisComponent)
namespace EMCalTriggerPtAnalysis {
AliEMCalTriggerClusterAnalysisComponent::AliEMCalTriggerClusterAnalysisComponent() :
AliEMCalTriggerTracksAnalysisComponent(),
fEnergyRange(),
fUsePatches(kFALSE)
{
}
AliEMCalTriggerClusterAnalysisComponent::AliEMCalTriggerClusterAnalysisComponent(const char* name) :
AliEMCalTriggerTracksAnalysisComponent(name),
fEnergyRange(),
fUsePatches(kFALSE)
{
fEnergyRange.SetLimits(0., 1000.);
}
void AliEMCalTriggerClusterAnalysisComponent::CreateHistos() {
AliEMCalTriggerTracksAnalysisComponent::CreateHistos();
std::map<std::string, std::string> triggerCombinations;
const char *triggernames[11] = {"MinBias", "EMCJHigh", "EMCJLow", "EMCGHigh",
"EMCGLow", "EMCHighBoth", "EMCHighGammaOnly", "EMCHighJetOnly",
"EMCLowBoth", "EMCLowGammaOnly", "EMCLowJetOnly"};
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[0], "min. bias events"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[1], "jet-triggered events (high threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[2], "jet-triggered events (low threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[3], "gamma-triggered events (high threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[4], "gamma-triggered events (low threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5], "jet and gamma triggered events (high threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6], "exclusively gamma-triggered events (high threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7], "exclusively jet-triggered events (high threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8], "jet and gamma triggered events (low threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9], "exclusively gamma-triggered events (low threshold)"));
triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10], "exclusively-triggered events (low threshold)"));
const AliEMCalTriggerBinningDimension *ptbinning = fBinning->GetBinning("pt"),
*etabinning = fBinning->GetBinning("eta"),
*phibinning = fBinning->GetBinning("phi"),
*vertexbinning = fBinning->GetBinning("zvertex");
const TAxis *clusteraxes[5] = {
DefineAxis("energy", ptbinning),
DefineAxis("eta", etabinning),
DefineAxis("phi", phibinning),
DefineAxis("zvertex", vertexbinning),
DefineAxis("mbtrigger", 2, -0.5, 1.5)
};
for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
const std::string name = it->first, &title = it->second;
fHistos->CreateTHnSparse(Form("hClusterCalibHist%s", name.c_str()), Form("Calib. cluster-based histogram for %s events", title.c_str()), 5, clusteraxes, "s");
fHistos->CreateTHnSparse(Form("hClusterUncalibHist%s", name.c_str()), Form("Uncalib. cluster-based histogram for %s events", title.c_str()), 5, clusteraxes, "s");
}
for(int iaxis = 0; iaxis < 5; iaxis++) delete clusteraxes[iaxis];
}
void AliEMCalTriggerClusterAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
AliDebug(1, Form("Number of calibrated clusters: %d", data->GetClusterContainer()->GetEntries()));
AliVCluster *clust(NULL);
AliVEvent *recEv = data->GetRecEvent();
std::vector<std::string> triggerNames;
this->GetMachingTriggerNames(triggerNames, fUsePatches);
for(int iclust = 0; iclust < recEv->GetNumberOfCaloClusters(); iclust++){
clust = recEv->GetCaloCluster(iclust);
if(!clust->IsEMCAL()) continue;
if(!fEnergyRange.IsInRange(clust->E())) continue;
for(std::vector<std::string>::iterator name = triggerNames.begin(); name != triggerNames.end(); ++name)
FillHistogram(Form("hClusterUncalibHist%s", name->c_str()), clust, recEv, fTriggerDecision->IsMinBias());
}
if(!data->GetClusterContainer())
printf("Cluster container not found \n");
TIter clusterIter(data->GetClusterContainer());
while((clust = dynamic_cast<AliVCluster *>(clusterIter()))){
if(!clust->IsEMCAL()) continue;
if(!fEnergyRange.IsInRange(clust->E())) continue;
for(std::vector<std::string>::iterator name = triggerNames.begin(); name != triggerNames.end(); ++name)
FillHistogram(Form("hClusterCalibHist%s", name->c_str()), clust, recEv, fTriggerDecision->IsMinBias());
}
}
void AliEMCalTriggerClusterAnalysisComponent::FillHistogram(const TString& histname, const AliVCluster* clust, AliVEvent *ev, Bool_t inMB) {
TLorentzVector vec;
double xyz[3];
ev->GetPrimaryVertex()->GetXYZ(xyz);
clust->GetMomentum(vec, xyz);
double infs[5] = {clust->E(), vec.Eta(), vec.Phi(), xyz[2], inMB ? 1. : 0.};
fHistos->FillTHnSparse(histname.Data(), infs);
}
}
AliEMCalTriggerClusterAnalysisComponent.cxx:1 AliEMCalTriggerClusterAnalysisComponent.cxx:2 AliEMCalTriggerClusterAnalysisComponent.cxx:3 AliEMCalTriggerClusterAnalysisComponent.cxx:4 AliEMCalTriggerClusterAnalysisComponent.cxx:5 AliEMCalTriggerClusterAnalysisComponent.cxx:6 AliEMCalTriggerClusterAnalysisComponent.cxx:7 AliEMCalTriggerClusterAnalysisComponent.cxx:8 AliEMCalTriggerClusterAnalysisComponent.cxx:9 AliEMCalTriggerClusterAnalysisComponent.cxx:10 AliEMCalTriggerClusterAnalysisComponent.cxx:11 AliEMCalTriggerClusterAnalysisComponent.cxx:12 AliEMCalTriggerClusterAnalysisComponent.cxx:13 AliEMCalTriggerClusterAnalysisComponent.cxx:14 AliEMCalTriggerClusterAnalysisComponent.cxx:15 AliEMCalTriggerClusterAnalysisComponent.cxx:16 AliEMCalTriggerClusterAnalysisComponent.cxx:17 AliEMCalTriggerClusterAnalysisComponent.cxx:18 AliEMCalTriggerClusterAnalysisComponent.cxx:19 AliEMCalTriggerClusterAnalysisComponent.cxx:20 AliEMCalTriggerClusterAnalysisComponent.cxx:21 AliEMCalTriggerClusterAnalysisComponent.cxx:22 AliEMCalTriggerClusterAnalysisComponent.cxx:23 AliEMCalTriggerClusterAnalysisComponent.cxx:24 AliEMCalTriggerClusterAnalysisComponent.cxx:25 AliEMCalTriggerClusterAnalysisComponent.cxx:26 AliEMCalTriggerClusterAnalysisComponent.cxx:27 AliEMCalTriggerClusterAnalysisComponent.cxx:28 AliEMCalTriggerClusterAnalysisComponent.cxx:29 AliEMCalTriggerClusterAnalysisComponent.cxx:30 AliEMCalTriggerClusterAnalysisComponent.cxx:31 AliEMCalTriggerClusterAnalysisComponent.cxx:32 AliEMCalTriggerClusterAnalysisComponent.cxx:33 AliEMCalTriggerClusterAnalysisComponent.cxx:34 AliEMCalTriggerClusterAnalysisComponent.cxx:35 AliEMCalTriggerClusterAnalysisComponent.cxx:36 AliEMCalTriggerClusterAnalysisComponent.cxx:37 AliEMCalTriggerClusterAnalysisComponent.cxx:38 AliEMCalTriggerClusterAnalysisComponent.cxx:39 AliEMCalTriggerClusterAnalysisComponent.cxx:40 AliEMCalTriggerClusterAnalysisComponent.cxx:41 AliEMCalTriggerClusterAnalysisComponent.cxx:42 AliEMCalTriggerClusterAnalysisComponent.cxx:43 AliEMCalTriggerClusterAnalysisComponent.cxx:44 AliEMCalTriggerClusterAnalysisComponent.cxx:45 AliEMCalTriggerClusterAnalysisComponent.cxx:46 AliEMCalTriggerClusterAnalysisComponent.cxx:47 AliEMCalTriggerClusterAnalysisComponent.cxx:48 AliEMCalTriggerClusterAnalysisComponent.cxx:49 AliEMCalTriggerClusterAnalysisComponent.cxx:50 AliEMCalTriggerClusterAnalysisComponent.cxx:51 AliEMCalTriggerClusterAnalysisComponent.cxx:52 AliEMCalTriggerClusterAnalysisComponent.cxx:53 AliEMCalTriggerClusterAnalysisComponent.cxx:54 AliEMCalTriggerClusterAnalysisComponent.cxx:55 AliEMCalTriggerClusterAnalysisComponent.cxx:56 AliEMCalTriggerClusterAnalysisComponent.cxx:57 AliEMCalTriggerClusterAnalysisComponent.cxx:58 AliEMCalTriggerClusterAnalysisComponent.cxx:59 AliEMCalTriggerClusterAnalysisComponent.cxx:60 AliEMCalTriggerClusterAnalysisComponent.cxx:61 AliEMCalTriggerClusterAnalysisComponent.cxx:62 AliEMCalTriggerClusterAnalysisComponent.cxx:63 AliEMCalTriggerClusterAnalysisComponent.cxx:64 AliEMCalTriggerClusterAnalysisComponent.cxx:65 AliEMCalTriggerClusterAnalysisComponent.cxx:66 AliEMCalTriggerClusterAnalysisComponent.cxx:67 AliEMCalTriggerClusterAnalysisComponent.cxx:68 AliEMCalTriggerClusterAnalysisComponent.cxx:69 AliEMCalTriggerClusterAnalysisComponent.cxx:70 AliEMCalTriggerClusterAnalysisComponent.cxx:71 AliEMCalTriggerClusterAnalysisComponent.cxx:72 AliEMCalTriggerClusterAnalysisComponent.cxx:73 AliEMCalTriggerClusterAnalysisComponent.cxx:74 AliEMCalTriggerClusterAnalysisComponent.cxx:75 AliEMCalTriggerClusterAnalysisComponent.cxx:76 AliEMCalTriggerClusterAnalysisComponent.cxx:77 AliEMCalTriggerClusterAnalysisComponent.cxx:78 AliEMCalTriggerClusterAnalysisComponent.cxx:79 AliEMCalTriggerClusterAnalysisComponent.cxx:80 AliEMCalTriggerClusterAnalysisComponent.cxx:81 AliEMCalTriggerClusterAnalysisComponent.cxx:82 AliEMCalTriggerClusterAnalysisComponent.cxx:83 AliEMCalTriggerClusterAnalysisComponent.cxx:84 AliEMCalTriggerClusterAnalysisComponent.cxx:85 AliEMCalTriggerClusterAnalysisComponent.cxx:86 AliEMCalTriggerClusterAnalysisComponent.cxx:87 AliEMCalTriggerClusterAnalysisComponent.cxx:88 AliEMCalTriggerClusterAnalysisComponent.cxx:89 AliEMCalTriggerClusterAnalysisComponent.cxx:90 AliEMCalTriggerClusterAnalysisComponent.cxx:91 AliEMCalTriggerClusterAnalysisComponent.cxx:92 AliEMCalTriggerClusterAnalysisComponent.cxx:93 AliEMCalTriggerClusterAnalysisComponent.cxx:94 AliEMCalTriggerClusterAnalysisComponent.cxx:95 AliEMCalTriggerClusterAnalysisComponent.cxx:96 AliEMCalTriggerClusterAnalysisComponent.cxx:97 AliEMCalTriggerClusterAnalysisComponent.cxx:98 AliEMCalTriggerClusterAnalysisComponent.cxx:99 AliEMCalTriggerClusterAnalysisComponent.cxx:100 AliEMCalTriggerClusterAnalysisComponent.cxx:101 AliEMCalTriggerClusterAnalysisComponent.cxx:102 AliEMCalTriggerClusterAnalysisComponent.cxx:103 AliEMCalTriggerClusterAnalysisComponent.cxx:104 AliEMCalTriggerClusterAnalysisComponent.cxx:105 AliEMCalTriggerClusterAnalysisComponent.cxx:106 AliEMCalTriggerClusterAnalysisComponent.cxx:107 AliEMCalTriggerClusterAnalysisComponent.cxx:108 AliEMCalTriggerClusterAnalysisComponent.cxx:109 AliEMCalTriggerClusterAnalysisComponent.cxx:110 AliEMCalTriggerClusterAnalysisComponent.cxx:111 AliEMCalTriggerClusterAnalysisComponent.cxx:112 AliEMCalTriggerClusterAnalysisComponent.cxx:113 AliEMCalTriggerClusterAnalysisComponent.cxx:114 AliEMCalTriggerClusterAnalysisComponent.cxx:115 AliEMCalTriggerClusterAnalysisComponent.cxx:116 AliEMCalTriggerClusterAnalysisComponent.cxx:117 AliEMCalTriggerClusterAnalysisComponent.cxx:118 AliEMCalTriggerClusterAnalysisComponent.cxx:119 AliEMCalTriggerClusterAnalysisComponent.cxx:120 AliEMCalTriggerClusterAnalysisComponent.cxx:121 AliEMCalTriggerClusterAnalysisComponent.cxx:122 AliEMCalTriggerClusterAnalysisComponent.cxx:123 AliEMCalTriggerClusterAnalysisComponent.cxx:124 AliEMCalTriggerClusterAnalysisComponent.cxx:125 AliEMCalTriggerClusterAnalysisComponent.cxx:126 AliEMCalTriggerClusterAnalysisComponent.cxx:127 AliEMCalTriggerClusterAnalysisComponent.cxx:128 AliEMCalTriggerClusterAnalysisComponent.cxx:129 AliEMCalTriggerClusterAnalysisComponent.cxx:130 AliEMCalTriggerClusterAnalysisComponent.cxx:131 AliEMCalTriggerClusterAnalysisComponent.cxx:132 AliEMCalTriggerClusterAnalysisComponent.cxx:133 AliEMCalTriggerClusterAnalysisComponent.cxx:134 AliEMCalTriggerClusterAnalysisComponent.cxx:135 AliEMCalTriggerClusterAnalysisComponent.cxx:136 AliEMCalTriggerClusterAnalysisComponent.cxx:137 AliEMCalTriggerClusterAnalysisComponent.cxx:138 AliEMCalTriggerClusterAnalysisComponent.cxx:139 AliEMCalTriggerClusterAnalysisComponent.cxx:140 AliEMCalTriggerClusterAnalysisComponent.cxx:141 AliEMCalTriggerClusterAnalysisComponent.cxx:142 AliEMCalTriggerClusterAnalysisComponent.cxx:143 AliEMCalTriggerClusterAnalysisComponent.cxx:144 AliEMCalTriggerClusterAnalysisComponent.cxx:145 AliEMCalTriggerClusterAnalysisComponent.cxx:146 AliEMCalTriggerClusterAnalysisComponent.cxx:147 AliEMCalTriggerClusterAnalysisComponent.cxx:148 AliEMCalTriggerClusterAnalysisComponent.cxx:149 AliEMCalTriggerClusterAnalysisComponent.cxx:150 AliEMCalTriggerClusterAnalysisComponent.cxx:151 AliEMCalTriggerClusterAnalysisComponent.cxx:152 AliEMCalTriggerClusterAnalysisComponent.cxx:153 AliEMCalTriggerClusterAnalysisComponent.cxx:154 AliEMCalTriggerClusterAnalysisComponent.cxx:155 AliEMCalTriggerClusterAnalysisComponent.cxx:156 AliEMCalTriggerClusterAnalysisComponent.cxx:157 AliEMCalTriggerClusterAnalysisComponent.cxx:158 AliEMCalTriggerClusterAnalysisComponent.cxx:159 AliEMCalTriggerClusterAnalysisComponent.cxx:160 AliEMCalTriggerClusterAnalysisComponent.cxx:161 AliEMCalTriggerClusterAnalysisComponent.cxx:162 AliEMCalTriggerClusterAnalysisComponent.cxx:163 AliEMCalTriggerClusterAnalysisComponent.cxx:164 AliEMCalTriggerClusterAnalysisComponent.cxx:165 AliEMCalTriggerClusterAnalysisComponent.cxx:166 AliEMCalTriggerClusterAnalysisComponent.cxx:167 AliEMCalTriggerClusterAnalysisComponent.cxx:168 AliEMCalTriggerClusterAnalysisComponent.cxx:169 AliEMCalTriggerClusterAnalysisComponent.cxx:170 AliEMCalTriggerClusterAnalysisComponent.cxx:171 AliEMCalTriggerClusterAnalysisComponent.cxx:172