#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 "AliVTrack.h"
#include "AliVVertex.h"
#include "AliEMCalHistoContainer.h"
#include "AliEMCalPtTaskVTrackSelection.h"
#include "AliEMCalTriggerAnaTriggerDecision.h"
#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerKineCuts.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerRecJetAnalysisComponent.h"
ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerRecJetAnalysisComponent)
namespace EMCalTriggerPtAnalysis {
AliEMCalTriggerRecJetAnalysisComponent::AliEMCalTriggerRecJetAnalysisComponent() :
AliEMCalTriggerTracksAnalysisComponent(),
fTrackSelection(NULL),
fMinimumJetPt(20.),
fRequestMCtrue(kFALSE),
fSwapEta(kFALSE),
fUsePatches(kFALSE)
{
}
AliEMCalTriggerRecJetAnalysisComponent::AliEMCalTriggerRecJetAnalysisComponent(const char* name) :
AliEMCalTriggerTracksAnalysisComponent(name),
fTrackSelection(NULL),
fMinimumJetPt(20.),
fRequestMCtrue(kFALSE),
fSwapEta(kFALSE),
fUsePatches(kFALSE)
{
}
AliEMCalTriggerRecJetAnalysisComponent::~AliEMCalTriggerRecJetAnalysisComponent() {
if(fTrackSelection) delete fTrackSelection;
}
void AliEMCalTriggerRecJetAnalysisComponent::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("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");
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");
}
for(int iaxis = 0; iaxis < 6; iaxis++) delete trackaxes[iaxis];
}
void AliEMCalTriggerRecJetAnalysisComponent::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);
AliVTrack *foundtrack(NULL);
AliVParticle *assocMC(NULL);
while(reconstructedJet){
if(TMath::Abs(reconstructedJet->Pt()) > fMinimumJetPt){
for(int ipart = 0; ipart < reconstructedJet->GetNumberOfTracks(); ipart++){
foundtrack = dynamic_cast<AliVTrack *>(reconstructedJet->TrackAt(ipart, cont->GetParticleContainer()->GetArray()));
if(!fKineCuts->IsSelected(foundtrack)) continue;
if(fRequestMCtrue && data->GetMCEvent() && (assocMC = IsMCTrueTrack(foundtrack, data->GetMCEvent()))) continue;
if(fTrackSelection && !fTrackSelection->IsTrackAccepted(foundtrack)) continue;
for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); ++name){
FillHistogram(Form("hTrackJetHist%s%s", jetptstring.Data(), name->c_str()), foundtrack, reconstructedJet, data->GetRecEvent()->GetPrimaryVertex()->GetZ());
if(assocMC){
FillHistogram(Form("hTrackJetHist%s%s", jetptstring.Data(), name->c_str()), assocMC, reconstructedJet, data->GetRecEvent()->GetPrimaryVertex()->GetZ());
}
}
}
}
reconstructedJet = cont->GetNextAcceptJet();
}
}
AliVParticle * AliEMCalTriggerRecJetAnalysisComponent::IsMCTrueTrack(
const AliVTrack* const trk, const AliMCEvent* evnt) const {
int label = TMath::Abs(trk->GetLabel());
AliVParticle *mcpart = evnt->GetTrack(label);
if(!mcpart) return NULL;
if(!evnt->IsPhysicalPrimary(label)) return NULL;
return mcpart;
}
void AliEMCalTriggerRecJetAnalysisComponent::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()), (fSwapEta ? -1. : 1.) * track->Eta(), track->Phi(), vz, fTriggerDecision->IsMinBias() ? 1. : 0.};
fHistos->FillTHnSparse(histname.Data(), data);
}
}
AliEMCalTriggerRecJetAnalysisComponent.cxx:1 AliEMCalTriggerRecJetAnalysisComponent.cxx:2 AliEMCalTriggerRecJetAnalysisComponent.cxx:3 AliEMCalTriggerRecJetAnalysisComponent.cxx:4 AliEMCalTriggerRecJetAnalysisComponent.cxx:5 AliEMCalTriggerRecJetAnalysisComponent.cxx:6 AliEMCalTriggerRecJetAnalysisComponent.cxx:7 AliEMCalTriggerRecJetAnalysisComponent.cxx:8 AliEMCalTriggerRecJetAnalysisComponent.cxx:9 AliEMCalTriggerRecJetAnalysisComponent.cxx:10 AliEMCalTriggerRecJetAnalysisComponent.cxx:11 AliEMCalTriggerRecJetAnalysisComponent.cxx:12 AliEMCalTriggerRecJetAnalysisComponent.cxx:13 AliEMCalTriggerRecJetAnalysisComponent.cxx:14 AliEMCalTriggerRecJetAnalysisComponent.cxx:15 AliEMCalTriggerRecJetAnalysisComponent.cxx:16 AliEMCalTriggerRecJetAnalysisComponent.cxx:17 AliEMCalTriggerRecJetAnalysisComponent.cxx:18 AliEMCalTriggerRecJetAnalysisComponent.cxx:19 AliEMCalTriggerRecJetAnalysisComponent.cxx:20 AliEMCalTriggerRecJetAnalysisComponent.cxx:21 AliEMCalTriggerRecJetAnalysisComponent.cxx:22 AliEMCalTriggerRecJetAnalysisComponent.cxx:23 AliEMCalTriggerRecJetAnalysisComponent.cxx:24 AliEMCalTriggerRecJetAnalysisComponent.cxx:25 AliEMCalTriggerRecJetAnalysisComponent.cxx:26 AliEMCalTriggerRecJetAnalysisComponent.cxx:27 AliEMCalTriggerRecJetAnalysisComponent.cxx:28 AliEMCalTriggerRecJetAnalysisComponent.cxx:29 AliEMCalTriggerRecJetAnalysisComponent.cxx:30 AliEMCalTriggerRecJetAnalysisComponent.cxx:31 AliEMCalTriggerRecJetAnalysisComponent.cxx:32 AliEMCalTriggerRecJetAnalysisComponent.cxx:33 AliEMCalTriggerRecJetAnalysisComponent.cxx:34 AliEMCalTriggerRecJetAnalysisComponent.cxx:35 AliEMCalTriggerRecJetAnalysisComponent.cxx:36 AliEMCalTriggerRecJetAnalysisComponent.cxx:37 AliEMCalTriggerRecJetAnalysisComponent.cxx:38 AliEMCalTriggerRecJetAnalysisComponent.cxx:39 AliEMCalTriggerRecJetAnalysisComponent.cxx:40 AliEMCalTriggerRecJetAnalysisComponent.cxx:41 AliEMCalTriggerRecJetAnalysisComponent.cxx:42 AliEMCalTriggerRecJetAnalysisComponent.cxx:43 AliEMCalTriggerRecJetAnalysisComponent.cxx:44 AliEMCalTriggerRecJetAnalysisComponent.cxx:45 AliEMCalTriggerRecJetAnalysisComponent.cxx:46 AliEMCalTriggerRecJetAnalysisComponent.cxx:47 AliEMCalTriggerRecJetAnalysisComponent.cxx:48 AliEMCalTriggerRecJetAnalysisComponent.cxx:49 AliEMCalTriggerRecJetAnalysisComponent.cxx:50 AliEMCalTriggerRecJetAnalysisComponent.cxx:51 AliEMCalTriggerRecJetAnalysisComponent.cxx:52 AliEMCalTriggerRecJetAnalysisComponent.cxx:53 AliEMCalTriggerRecJetAnalysisComponent.cxx:54 AliEMCalTriggerRecJetAnalysisComponent.cxx:55 AliEMCalTriggerRecJetAnalysisComponent.cxx:56 AliEMCalTriggerRecJetAnalysisComponent.cxx:57 AliEMCalTriggerRecJetAnalysisComponent.cxx:58 AliEMCalTriggerRecJetAnalysisComponent.cxx:59 AliEMCalTriggerRecJetAnalysisComponent.cxx:60 AliEMCalTriggerRecJetAnalysisComponent.cxx:61 AliEMCalTriggerRecJetAnalysisComponent.cxx:62 AliEMCalTriggerRecJetAnalysisComponent.cxx:63 AliEMCalTriggerRecJetAnalysisComponent.cxx:64 AliEMCalTriggerRecJetAnalysisComponent.cxx:65 AliEMCalTriggerRecJetAnalysisComponent.cxx:66 AliEMCalTriggerRecJetAnalysisComponent.cxx:67 AliEMCalTriggerRecJetAnalysisComponent.cxx:68 AliEMCalTriggerRecJetAnalysisComponent.cxx:69 AliEMCalTriggerRecJetAnalysisComponent.cxx:70 AliEMCalTriggerRecJetAnalysisComponent.cxx:71 AliEMCalTriggerRecJetAnalysisComponent.cxx:72 AliEMCalTriggerRecJetAnalysisComponent.cxx:73 AliEMCalTriggerRecJetAnalysisComponent.cxx:74 AliEMCalTriggerRecJetAnalysisComponent.cxx:75 AliEMCalTriggerRecJetAnalysisComponent.cxx:76 AliEMCalTriggerRecJetAnalysisComponent.cxx:77 AliEMCalTriggerRecJetAnalysisComponent.cxx:78 AliEMCalTriggerRecJetAnalysisComponent.cxx:79 AliEMCalTriggerRecJetAnalysisComponent.cxx:80 AliEMCalTriggerRecJetAnalysisComponent.cxx:81 AliEMCalTriggerRecJetAnalysisComponent.cxx:82 AliEMCalTriggerRecJetAnalysisComponent.cxx:83 AliEMCalTriggerRecJetAnalysisComponent.cxx:84 AliEMCalTriggerRecJetAnalysisComponent.cxx:85 AliEMCalTriggerRecJetAnalysisComponent.cxx:86 AliEMCalTriggerRecJetAnalysisComponent.cxx:87 AliEMCalTriggerRecJetAnalysisComponent.cxx:88 AliEMCalTriggerRecJetAnalysisComponent.cxx:89 AliEMCalTriggerRecJetAnalysisComponent.cxx:90 AliEMCalTriggerRecJetAnalysisComponent.cxx:91 AliEMCalTriggerRecJetAnalysisComponent.cxx:92 AliEMCalTriggerRecJetAnalysisComponent.cxx:93 AliEMCalTriggerRecJetAnalysisComponent.cxx:94 AliEMCalTriggerRecJetAnalysisComponent.cxx:95 AliEMCalTriggerRecJetAnalysisComponent.cxx:96 AliEMCalTriggerRecJetAnalysisComponent.cxx:97 AliEMCalTriggerRecJetAnalysisComponent.cxx:98 AliEMCalTriggerRecJetAnalysisComponent.cxx:99 AliEMCalTriggerRecJetAnalysisComponent.cxx:100 AliEMCalTriggerRecJetAnalysisComponent.cxx:101 AliEMCalTriggerRecJetAnalysisComponent.cxx:102 AliEMCalTriggerRecJetAnalysisComponent.cxx:103 AliEMCalTriggerRecJetAnalysisComponent.cxx:104 AliEMCalTriggerRecJetAnalysisComponent.cxx:105 AliEMCalTriggerRecJetAnalysisComponent.cxx:106 AliEMCalTriggerRecJetAnalysisComponent.cxx:107 AliEMCalTriggerRecJetAnalysisComponent.cxx:108 AliEMCalTriggerRecJetAnalysisComponent.cxx:109 AliEMCalTriggerRecJetAnalysisComponent.cxx:110 AliEMCalTriggerRecJetAnalysisComponent.cxx:111 AliEMCalTriggerRecJetAnalysisComponent.cxx:112 AliEMCalTriggerRecJetAnalysisComponent.cxx:113 AliEMCalTriggerRecJetAnalysisComponent.cxx:114 AliEMCalTriggerRecJetAnalysisComponent.cxx:115 AliEMCalTriggerRecJetAnalysisComponent.cxx:116 AliEMCalTriggerRecJetAnalysisComponent.cxx:117 AliEMCalTriggerRecJetAnalysisComponent.cxx:118 AliEMCalTriggerRecJetAnalysisComponent.cxx:119 AliEMCalTriggerRecJetAnalysisComponent.cxx:120 AliEMCalTriggerRecJetAnalysisComponent.cxx:121 AliEMCalTriggerRecJetAnalysisComponent.cxx:122 AliEMCalTriggerRecJetAnalysisComponent.cxx:123 AliEMCalTriggerRecJetAnalysisComponent.cxx:124 AliEMCalTriggerRecJetAnalysisComponent.cxx:125 AliEMCalTriggerRecJetAnalysisComponent.cxx:126 AliEMCalTriggerRecJetAnalysisComponent.cxx:127 AliEMCalTriggerRecJetAnalysisComponent.cxx:128 AliEMCalTriggerRecJetAnalysisComponent.cxx:129 AliEMCalTriggerRecJetAnalysisComponent.cxx:130 AliEMCalTriggerRecJetAnalysisComponent.cxx:131 AliEMCalTriggerRecJetAnalysisComponent.cxx:132 AliEMCalTriggerRecJetAnalysisComponent.cxx:133 AliEMCalTriggerRecJetAnalysisComponent.cxx:134 AliEMCalTriggerRecJetAnalysisComponent.cxx:135 AliEMCalTriggerRecJetAnalysisComponent.cxx:136 AliEMCalTriggerRecJetAnalysisComponent.cxx:137 AliEMCalTriggerRecJetAnalysisComponent.cxx:138 AliEMCalTriggerRecJetAnalysisComponent.cxx:139 AliEMCalTriggerRecJetAnalysisComponent.cxx:140 AliEMCalTriggerRecJetAnalysisComponent.cxx:141 AliEMCalTriggerRecJetAnalysisComponent.cxx:142 AliEMCalTriggerRecJetAnalysisComponent.cxx:143 AliEMCalTriggerRecJetAnalysisComponent.cxx:144 AliEMCalTriggerRecJetAnalysisComponent.cxx:145 AliEMCalTriggerRecJetAnalysisComponent.cxx:146 AliEMCalTriggerRecJetAnalysisComponent.cxx:147 AliEMCalTriggerRecJetAnalysisComponent.cxx:148 AliEMCalTriggerRecJetAnalysisComponent.cxx:149 AliEMCalTriggerRecJetAnalysisComponent.cxx:150 AliEMCalTriggerRecJetAnalysisComponent.cxx:151 AliEMCalTriggerRecJetAnalysisComponent.cxx:152 AliEMCalTriggerRecJetAnalysisComponent.cxx:153 AliEMCalTriggerRecJetAnalysisComponent.cxx:154 AliEMCalTriggerRecJetAnalysisComponent.cxx:155 AliEMCalTriggerRecJetAnalysisComponent.cxx:156 AliEMCalTriggerRecJetAnalysisComponent.cxx:157 AliEMCalTriggerRecJetAnalysisComponent.cxx:158 AliEMCalTriggerRecJetAnalysisComponent.cxx:159 AliEMCalTriggerRecJetAnalysisComponent.cxx:160 AliEMCalTriggerRecJetAnalysisComponent.cxx:161 AliEMCalTriggerRecJetAnalysisComponent.cxx:162 AliEMCalTriggerRecJetAnalysisComponent.cxx:163 AliEMCalTriggerRecJetAnalysisComponent.cxx:164 AliEMCalTriggerRecJetAnalysisComponent.cxx:165 AliEMCalTriggerRecJetAnalysisComponent.cxx:166 AliEMCalTriggerRecJetAnalysisComponent.cxx:167 AliEMCalTriggerRecJetAnalysisComponent.cxx:168 AliEMCalTriggerRecJetAnalysisComponent.cxx:169 AliEMCalTriggerRecJetAnalysisComponent.cxx:170 AliEMCalTriggerRecJetAnalysisComponent.cxx:171 AliEMCalTriggerRecJetAnalysisComponent.cxx:172 AliEMCalTriggerRecJetAnalysisComponent.cxx:173 AliEMCalTriggerRecJetAnalysisComponent.cxx:174 AliEMCalTriggerRecJetAnalysisComponent.cxx:175 AliEMCalTriggerRecJetAnalysisComponent.cxx:176 AliEMCalTriggerRecJetAnalysisComponent.cxx:177 AliEMCalTriggerRecJetAnalysisComponent.cxx:178 AliEMCalTriggerRecJetAnalysisComponent.cxx:179 AliEMCalTriggerRecJetAnalysisComponent.cxx:180 AliEMCalTriggerRecJetAnalysisComponent.cxx:181 AliEMCalTriggerRecJetAnalysisComponent.cxx:182 AliEMCalTriggerRecJetAnalysisComponent.cxx:183 AliEMCalTriggerRecJetAnalysisComponent.cxx:184 AliEMCalTriggerRecJetAnalysisComponent.cxx:185 AliEMCalTriggerRecJetAnalysisComponent.cxx:186 AliEMCalTriggerRecJetAnalysisComponent.cxx:187 AliEMCalTriggerRecJetAnalysisComponent.cxx:188 AliEMCalTriggerRecJetAnalysisComponent.cxx:189 AliEMCalTriggerRecJetAnalysisComponent.cxx:190 AliEMCalTriggerRecJetAnalysisComponent.cxx:191 AliEMCalTriggerRecJetAnalysisComponent.cxx:192 AliEMCalTriggerRecJetAnalysisComponent.cxx:193 AliEMCalTriggerRecJetAnalysisComponent.cxx:194 AliEMCalTriggerRecJetAnalysisComponent.cxx:195 AliEMCalTriggerRecJetAnalysisComponent.cxx:196 AliEMCalTriggerRecJetAnalysisComponent.cxx:197 AliEMCalTriggerRecJetAnalysisComponent.cxx:198 AliEMCalTriggerRecJetAnalysisComponent.cxx:199 AliEMCalTriggerRecJetAnalysisComponent.cxx:200