#include <string>
#include <vector>
#include <TMath.h>
#include <TString.h>
#include "AliEmcalJet.h"
#include "AliJetContainer.h"
#include "AliMCParticle.h"
#include "AliMCEvent.h"
#include "AliParticleContainer.h"
#include "AliVEvent.h"
#include "AliVParticle.h"
#include "AliVVertex.h"
#include "AliEMCalHistoContainer.h"
#include "AliEMCalTriggerAnaTriggerDecision.h"
#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerKineCuts.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerMCJetAnalysisComponent.h"
ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerMCJetAnalysisComponent)
namespace EMCalTriggerPtAnalysis {
AliEMCalTriggerMCJetAnalysisComponent::AliEMCalTriggerMCJetAnalysisComponent():
AliEMCalTriggerTracksAnalysisComponent(),
fMinimumJetPt(20.),
fUsePatches(kFALSE)
{
}
AliEMCalTriggerMCJetAnalysisComponent::AliEMCalTriggerMCJetAnalysisComponent(const char* name) :
AliEMCalTriggerTracksAnalysisComponent(name),
fMinimumJetPt(20.),
fUsePatches(kFALSE)
{
}
void AliEMCalTriggerMCJetAnalysisComponent::CreateHistos() {
AliEMCalTriggerTracksAnalysisComponent::CreateHistos();
TString jetptstring = Form("jetPt%03d", int(fMinimumJetPt));
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 *trackaxes[6] = {
DefineAxis("trackpt", ptbinning),
DefineAxis("jettpt", 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("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");
}
for(int iaxis = 0; iaxis < 6; iaxis++) delete trackaxes[iaxis];
}
void AliEMCalTriggerMCJetAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
std::vector<std::string> triggernames;
this->GetMachingTriggerNames(triggernames, fUsePatches);
TString jetptstring = Form("jetPt%03d", int(fMinimumJetPt));
AliJetContainer *cont = data->GetJetContainerData();
AliEmcalJet *reconstructedJet = cont->GetNextAcceptJet(0);
AliVParticle *foundtrack(NULL);
while(reconstructedJet){
if(TMath::Abs(reconstructedJet->Pt()) > fMinimumJetPt){
for(int ipart = 0; ipart < reconstructedJet->GetNumberOfTracks(); ipart++){
foundtrack = dynamic_cast<AliVParticle *>(reconstructedJet->TrackAt(ipart, cont->GetParticleContainer()->GetArray()));
if(!fKineCuts->IsSelected(foundtrack)) continue;
if(!foundtrack->Charge()) continue;
if(!data->GetMCEvent()->IsPhysicalPrimary(foundtrack->GetLabel())) continue;
for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name){
FillHistogram(Form("hParticleJetHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, data->GetRecEvent()->GetPrimaryVertex()->GetZ());
}
}
}
reconstructedJet = cont->GetNextAcceptJet();
}
}
void AliEMCalTriggerMCJetAnalysisComponent::FillHistogram(
const TString& histname, const AliVParticle* track, const AliEmcalJet* jet,
double vz) {
if(!fTriggerDecision) return;
double data[6] = {TMath::Abs(track->Pt()), TMath::Abs(jet->Pt()), track->Eta(), track->Phi(), vz, fTriggerDecision->IsMinBias() ? 1. : 0.};
fHistos->FillTHnSparse(histname.Data(), data);
}
}
AliEMCalTriggerMCJetAnalysisComponent.cxx:1 AliEMCalTriggerMCJetAnalysisComponent.cxx:2 AliEMCalTriggerMCJetAnalysisComponent.cxx:3 AliEMCalTriggerMCJetAnalysisComponent.cxx:4 AliEMCalTriggerMCJetAnalysisComponent.cxx:5 AliEMCalTriggerMCJetAnalysisComponent.cxx:6 AliEMCalTriggerMCJetAnalysisComponent.cxx:7 AliEMCalTriggerMCJetAnalysisComponent.cxx:8 AliEMCalTriggerMCJetAnalysisComponent.cxx:9 AliEMCalTriggerMCJetAnalysisComponent.cxx:10 AliEMCalTriggerMCJetAnalysisComponent.cxx:11 AliEMCalTriggerMCJetAnalysisComponent.cxx:12 AliEMCalTriggerMCJetAnalysisComponent.cxx:13 AliEMCalTriggerMCJetAnalysisComponent.cxx:14 AliEMCalTriggerMCJetAnalysisComponent.cxx:15 AliEMCalTriggerMCJetAnalysisComponent.cxx:16 AliEMCalTriggerMCJetAnalysisComponent.cxx:17 AliEMCalTriggerMCJetAnalysisComponent.cxx:18 AliEMCalTriggerMCJetAnalysisComponent.cxx:19 AliEMCalTriggerMCJetAnalysisComponent.cxx:20 AliEMCalTriggerMCJetAnalysisComponent.cxx:21 AliEMCalTriggerMCJetAnalysisComponent.cxx:22 AliEMCalTriggerMCJetAnalysisComponent.cxx:23 AliEMCalTriggerMCJetAnalysisComponent.cxx:24 AliEMCalTriggerMCJetAnalysisComponent.cxx:25 AliEMCalTriggerMCJetAnalysisComponent.cxx:26 AliEMCalTriggerMCJetAnalysisComponent.cxx:27 AliEMCalTriggerMCJetAnalysisComponent.cxx:28 AliEMCalTriggerMCJetAnalysisComponent.cxx:29 AliEMCalTriggerMCJetAnalysisComponent.cxx:30 AliEMCalTriggerMCJetAnalysisComponent.cxx:31 AliEMCalTriggerMCJetAnalysisComponent.cxx:32 AliEMCalTriggerMCJetAnalysisComponent.cxx:33 AliEMCalTriggerMCJetAnalysisComponent.cxx:34 AliEMCalTriggerMCJetAnalysisComponent.cxx:35 AliEMCalTriggerMCJetAnalysisComponent.cxx:36 AliEMCalTriggerMCJetAnalysisComponent.cxx:37 AliEMCalTriggerMCJetAnalysisComponent.cxx:38 AliEMCalTriggerMCJetAnalysisComponent.cxx:39 AliEMCalTriggerMCJetAnalysisComponent.cxx:40 AliEMCalTriggerMCJetAnalysisComponent.cxx:41 AliEMCalTriggerMCJetAnalysisComponent.cxx:42 AliEMCalTriggerMCJetAnalysisComponent.cxx:43 AliEMCalTriggerMCJetAnalysisComponent.cxx:44 AliEMCalTriggerMCJetAnalysisComponent.cxx:45 AliEMCalTriggerMCJetAnalysisComponent.cxx:46 AliEMCalTriggerMCJetAnalysisComponent.cxx:47 AliEMCalTriggerMCJetAnalysisComponent.cxx:48 AliEMCalTriggerMCJetAnalysisComponent.cxx:49 AliEMCalTriggerMCJetAnalysisComponent.cxx:50 AliEMCalTriggerMCJetAnalysisComponent.cxx:51 AliEMCalTriggerMCJetAnalysisComponent.cxx:52 AliEMCalTriggerMCJetAnalysisComponent.cxx:53 AliEMCalTriggerMCJetAnalysisComponent.cxx:54 AliEMCalTriggerMCJetAnalysisComponent.cxx:55 AliEMCalTriggerMCJetAnalysisComponent.cxx:56 AliEMCalTriggerMCJetAnalysisComponent.cxx:57 AliEMCalTriggerMCJetAnalysisComponent.cxx:58 AliEMCalTriggerMCJetAnalysisComponent.cxx:59 AliEMCalTriggerMCJetAnalysisComponent.cxx:60 AliEMCalTriggerMCJetAnalysisComponent.cxx:61 AliEMCalTriggerMCJetAnalysisComponent.cxx:62 AliEMCalTriggerMCJetAnalysisComponent.cxx:63 AliEMCalTriggerMCJetAnalysisComponent.cxx:64 AliEMCalTriggerMCJetAnalysisComponent.cxx:65 AliEMCalTriggerMCJetAnalysisComponent.cxx:66 AliEMCalTriggerMCJetAnalysisComponent.cxx:67 AliEMCalTriggerMCJetAnalysisComponent.cxx:68 AliEMCalTriggerMCJetAnalysisComponent.cxx:69 AliEMCalTriggerMCJetAnalysisComponent.cxx:70 AliEMCalTriggerMCJetAnalysisComponent.cxx:71 AliEMCalTriggerMCJetAnalysisComponent.cxx:72 AliEMCalTriggerMCJetAnalysisComponent.cxx:73 AliEMCalTriggerMCJetAnalysisComponent.cxx:74 AliEMCalTriggerMCJetAnalysisComponent.cxx:75 AliEMCalTriggerMCJetAnalysisComponent.cxx:76 AliEMCalTriggerMCJetAnalysisComponent.cxx:77 AliEMCalTriggerMCJetAnalysisComponent.cxx:78 AliEMCalTriggerMCJetAnalysisComponent.cxx:79 AliEMCalTriggerMCJetAnalysisComponent.cxx:80 AliEMCalTriggerMCJetAnalysisComponent.cxx:81 AliEMCalTriggerMCJetAnalysisComponent.cxx:82 AliEMCalTriggerMCJetAnalysisComponent.cxx:83 AliEMCalTriggerMCJetAnalysisComponent.cxx:84 AliEMCalTriggerMCJetAnalysisComponent.cxx:85 AliEMCalTriggerMCJetAnalysisComponent.cxx:86 AliEMCalTriggerMCJetAnalysisComponent.cxx:87 AliEMCalTriggerMCJetAnalysisComponent.cxx:88 AliEMCalTriggerMCJetAnalysisComponent.cxx:89 AliEMCalTriggerMCJetAnalysisComponent.cxx:90 AliEMCalTriggerMCJetAnalysisComponent.cxx:91 AliEMCalTriggerMCJetAnalysisComponent.cxx:92 AliEMCalTriggerMCJetAnalysisComponent.cxx:93 AliEMCalTriggerMCJetAnalysisComponent.cxx:94 AliEMCalTriggerMCJetAnalysisComponent.cxx:95 AliEMCalTriggerMCJetAnalysisComponent.cxx:96 AliEMCalTriggerMCJetAnalysisComponent.cxx:97 AliEMCalTriggerMCJetAnalysisComponent.cxx:98 AliEMCalTriggerMCJetAnalysisComponent.cxx:99 AliEMCalTriggerMCJetAnalysisComponent.cxx:100 AliEMCalTriggerMCJetAnalysisComponent.cxx:101 AliEMCalTriggerMCJetAnalysisComponent.cxx:102 AliEMCalTriggerMCJetAnalysisComponent.cxx:103 AliEMCalTriggerMCJetAnalysisComponent.cxx:104 AliEMCalTriggerMCJetAnalysisComponent.cxx:105 AliEMCalTriggerMCJetAnalysisComponent.cxx:106 AliEMCalTriggerMCJetAnalysisComponent.cxx:107 AliEMCalTriggerMCJetAnalysisComponent.cxx:108 AliEMCalTriggerMCJetAnalysisComponent.cxx:109 AliEMCalTriggerMCJetAnalysisComponent.cxx:110 AliEMCalTriggerMCJetAnalysisComponent.cxx:111 AliEMCalTriggerMCJetAnalysisComponent.cxx:112 AliEMCalTriggerMCJetAnalysisComponent.cxx:113 AliEMCalTriggerMCJetAnalysisComponent.cxx:114 AliEMCalTriggerMCJetAnalysisComponent.cxx:115 AliEMCalTriggerMCJetAnalysisComponent.cxx:116 AliEMCalTriggerMCJetAnalysisComponent.cxx:117 AliEMCalTriggerMCJetAnalysisComponent.cxx:118 AliEMCalTriggerMCJetAnalysisComponent.cxx:119 AliEMCalTriggerMCJetAnalysisComponent.cxx:120 AliEMCalTriggerMCJetAnalysisComponent.cxx:121 AliEMCalTriggerMCJetAnalysisComponent.cxx:122 AliEMCalTriggerMCJetAnalysisComponent.cxx:123 AliEMCalTriggerMCJetAnalysisComponent.cxx:124 AliEMCalTriggerMCJetAnalysisComponent.cxx:125 AliEMCalTriggerMCJetAnalysisComponent.cxx:126 AliEMCalTriggerMCJetAnalysisComponent.cxx:127 AliEMCalTriggerMCJetAnalysisComponent.cxx:128 AliEMCalTriggerMCJetAnalysisComponent.cxx:129 AliEMCalTriggerMCJetAnalysisComponent.cxx:130 AliEMCalTriggerMCJetAnalysisComponent.cxx:131 AliEMCalTriggerMCJetAnalysisComponent.cxx:132 AliEMCalTriggerMCJetAnalysisComponent.cxx:133 AliEMCalTriggerMCJetAnalysisComponent.cxx:134 AliEMCalTriggerMCJetAnalysisComponent.cxx:135 AliEMCalTriggerMCJetAnalysisComponent.cxx:136 AliEMCalTriggerMCJetAnalysisComponent.cxx:137 AliEMCalTriggerMCJetAnalysisComponent.cxx:138 AliEMCalTriggerMCJetAnalysisComponent.cxx:139 AliEMCalTriggerMCJetAnalysisComponent.cxx:140 AliEMCalTriggerMCJetAnalysisComponent.cxx:141 AliEMCalTriggerMCJetAnalysisComponent.cxx:142 AliEMCalTriggerMCJetAnalysisComponent.cxx:143 AliEMCalTriggerMCJetAnalysisComponent.cxx:144 AliEMCalTriggerMCJetAnalysisComponent.cxx:145 AliEMCalTriggerMCJetAnalysisComponent.cxx:146 AliEMCalTriggerMCJetAnalysisComponent.cxx:147 AliEMCalTriggerMCJetAnalysisComponent.cxx:148 AliEMCalTriggerMCJetAnalysisComponent.cxx:149 AliEMCalTriggerMCJetAnalysisComponent.cxx:150 AliEMCalTriggerMCJetAnalysisComponent.cxx:151 AliEMCalTriggerMCJetAnalysisComponent.cxx:152 AliEMCalTriggerMCJetAnalysisComponent.cxx:153 AliEMCalTriggerMCJetAnalysisComponent.cxx:154 AliEMCalTriggerMCJetAnalysisComponent.cxx:155 AliEMCalTriggerMCJetAnalysisComponent.cxx:156 AliEMCalTriggerMCJetAnalysisComponent.cxx:157 AliEMCalTriggerMCJetAnalysisComponent.cxx:158 AliEMCalTriggerMCJetAnalysisComponent.cxx:159 AliEMCalTriggerMCJetAnalysisComponent.cxx:160 AliEMCalTriggerMCJetAnalysisComponent.cxx:161