#include <map>
#include <string>
#include <vector>
#include <TAxis.h>
#include <TClonesArray.h>
#include <TMath.h>
#include <TString.h>
#include "AliLog.h"
#include "AliMCEvent.h"
#include "AliVCluster.h"
#include "AliVEvent.h"
#include "AliVParticle.h"
#include "AliVTrack.h"
#include "AliEMCalTriggerAnaTriggerDecision.h"
#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerKineCuts.h"
#include "AliEMCalPtTaskVTrackSelection.h"
#include "AliEMCalTriggerRecTrackAnalysisComponent.h"
ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerRecTrackAnalysisComponent)
namespace EMCalTriggerPtAnalysis {
AliEMCalTriggerRecTrackAnalysisComponent::AliEMCalTriggerRecTrackAnalysisComponent() :
AliEMCalTriggerTracksAnalysisComponent(),
fTrackSelection(NULL),
fSwapEta(kFALSE),
fUsePatches(kFALSE),
fRequestMCtrue(kFALSE)
{
}
AliEMCalTriggerRecTrackAnalysisComponent::AliEMCalTriggerRecTrackAnalysisComponent(const char *name) :
AliEMCalTriggerTracksAnalysisComponent(name),
fTrackSelection(NULL),
fSwapEta(kFALSE),
fUsePatches(kFALSE),
fRequestMCtrue(kFALSE)
{
}
AliEMCalTriggerRecTrackAnalysisComponent::~AliEMCalTriggerRecTrackAnalysisComponent() {
if(fTrackSelection) delete fTrackSelection;
}
void AliEMCalTriggerRecTrackAnalysisComponent::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 *trackaxes[5] = {
DefineAxis("pt", 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("hTrackHist%s", name.c_str()), Form("Track-based data for %s events", title.c_str()), 5, trackaxes, "s");
fHistos->CreateTHnSparse(Form("hTrackInAcceptanceHist%s", name.c_str()), Form("Track-based data for %s events for tracks matched to EMCal clusters", title.c_str()), 5, trackaxes, "s");
fHistos->CreateTHnSparse(Form("hMCTrackHist%s", name.c_str()), Form("Track-based data for %s events with MC kinematics", title.c_str()), 5, trackaxes, "s");
fHistos->CreateTHnSparse(Form("hMCTrackInAcceptanceHist%s", name.c_str()), Form("Track-based data for %s events with MC kinematics for tracks matched to EMCal clusters", title.c_str()), 5, trackaxes, "s");
}
for(int iaxis = 0; iaxis < 5; iaxis++) delete trackaxes[iaxis];
}
void AliEMCalTriggerRecTrackAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
AliDebug(1, Form("Number of matched tracks: %d", data->GetMatchedTrackContainer()->GetEntries()));
std::vector<std::string> triggernames;
this->GetMachingTriggerNames(triggernames, fUsePatches);
AliVTrack *track(NULL);
AliVParticle *assocMC(NULL);
TIter trackIter(data->GetMatchedTrackContainer());
while((track = dynamic_cast<AliVTrack *>(trackIter()))){
assocMC = NULL;
if(fKineCuts && !fKineCuts->IsSelected(track)) continue;
if(fTrackSelection && !fTrackSelection->IsTrackAccepted(track)) continue;
if(fRequestMCtrue && data->GetMCEvent() && !(assocMC = IsMCTrueTrack(track, data->GetMCEvent()))) continue;
Bool_t hasCluster = kFALSE;
AliVCluster *clust(NULL);
if(track->GetEMCALcluster() >= 0 && (clust = dynamic_cast<AliVCluster *>(data->GetClusterContainer()->At(track->GetEMCALcluster()))))
hasCluster = kTRUE;
for(std::vector<std::string>::iterator name = triggernames.begin(); name != triggernames.end(); name++){
FillHistogram(Form("hTrackHist%s", name->c_str()), track, NULL, data->GetRecEvent(), kFALSE);
if(hasCluster) FillHistogram(Form("hTrackInAcceptanceHist%s", name->c_str()), track, NULL, data->GetRecEvent(), kFALSE);
if(assocMC){
FillHistogram(Form("hMCTrackHist%s", name->c_str()), track, NULL, data->GetRecEvent(), kTRUE);
if(hasCluster) FillHistogram(Form("hMCTrackInAcceptanceHist%s", name->c_str()), track, NULL, data->GetRecEvent(), kTRUE);
}
}
}
}
AliVParticle * AliEMCalTriggerRecTrackAnalysisComponent::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 AliEMCalTriggerRecTrackAnalysisComponent::FillHistogram(
const TString& histname, const AliVTrack* const trk,
const AliVParticle* assocMC, const AliVEvent* const recev,
Bool_t useMCkine) {
if(useMCkine && !assocMC) return;
double data[5];
data[0] = useMCkine ? TMath::Abs(assocMC->Pt()) : TMath::Abs(trk->Pt());
data[1] = (fSwapEta ? -1. : 1.) * (useMCkine ? assocMC->Eta() : trk->Eta());
data[2] = useMCkine ? assocMC->Phi() : trk->Phi();
data[3] = recev->GetPrimaryVertex()->GetZ();
data[4] = fTriggerDecision->IsMinBias();
fHistos->FillTHnSparse(histname.Data(), data);
}
}
AliEMCalTriggerRecTrackAnalysisComponent.cxx:1 AliEMCalTriggerRecTrackAnalysisComponent.cxx:2 AliEMCalTriggerRecTrackAnalysisComponent.cxx:3 AliEMCalTriggerRecTrackAnalysisComponent.cxx:4 AliEMCalTriggerRecTrackAnalysisComponent.cxx:5 AliEMCalTriggerRecTrackAnalysisComponent.cxx:6 AliEMCalTriggerRecTrackAnalysisComponent.cxx:7 AliEMCalTriggerRecTrackAnalysisComponent.cxx:8 AliEMCalTriggerRecTrackAnalysisComponent.cxx:9 AliEMCalTriggerRecTrackAnalysisComponent.cxx:10 AliEMCalTriggerRecTrackAnalysisComponent.cxx:11 AliEMCalTriggerRecTrackAnalysisComponent.cxx:12 AliEMCalTriggerRecTrackAnalysisComponent.cxx:13 AliEMCalTriggerRecTrackAnalysisComponent.cxx:14 AliEMCalTriggerRecTrackAnalysisComponent.cxx:15 AliEMCalTriggerRecTrackAnalysisComponent.cxx:16 AliEMCalTriggerRecTrackAnalysisComponent.cxx:17 AliEMCalTriggerRecTrackAnalysisComponent.cxx:18 AliEMCalTriggerRecTrackAnalysisComponent.cxx:19 AliEMCalTriggerRecTrackAnalysisComponent.cxx:20 AliEMCalTriggerRecTrackAnalysisComponent.cxx:21 AliEMCalTriggerRecTrackAnalysisComponent.cxx:22 AliEMCalTriggerRecTrackAnalysisComponent.cxx:23 AliEMCalTriggerRecTrackAnalysisComponent.cxx:24 AliEMCalTriggerRecTrackAnalysisComponent.cxx:25 AliEMCalTriggerRecTrackAnalysisComponent.cxx:26 AliEMCalTriggerRecTrackAnalysisComponent.cxx:27 AliEMCalTriggerRecTrackAnalysisComponent.cxx:28 AliEMCalTriggerRecTrackAnalysisComponent.cxx:29 AliEMCalTriggerRecTrackAnalysisComponent.cxx:30 AliEMCalTriggerRecTrackAnalysisComponent.cxx:31 AliEMCalTriggerRecTrackAnalysisComponent.cxx:32 AliEMCalTriggerRecTrackAnalysisComponent.cxx:33 AliEMCalTriggerRecTrackAnalysisComponent.cxx:34 AliEMCalTriggerRecTrackAnalysisComponent.cxx:35 AliEMCalTriggerRecTrackAnalysisComponent.cxx:36 AliEMCalTriggerRecTrackAnalysisComponent.cxx:37 AliEMCalTriggerRecTrackAnalysisComponent.cxx:38 AliEMCalTriggerRecTrackAnalysisComponent.cxx:39 AliEMCalTriggerRecTrackAnalysisComponent.cxx:40 AliEMCalTriggerRecTrackAnalysisComponent.cxx:41 AliEMCalTriggerRecTrackAnalysisComponent.cxx:42 AliEMCalTriggerRecTrackAnalysisComponent.cxx:43 AliEMCalTriggerRecTrackAnalysisComponent.cxx:44 AliEMCalTriggerRecTrackAnalysisComponent.cxx:45 AliEMCalTriggerRecTrackAnalysisComponent.cxx:46 AliEMCalTriggerRecTrackAnalysisComponent.cxx:47 AliEMCalTriggerRecTrackAnalysisComponent.cxx:48 AliEMCalTriggerRecTrackAnalysisComponent.cxx:49 AliEMCalTriggerRecTrackAnalysisComponent.cxx:50 AliEMCalTriggerRecTrackAnalysisComponent.cxx:51 AliEMCalTriggerRecTrackAnalysisComponent.cxx:52 AliEMCalTriggerRecTrackAnalysisComponent.cxx:53 AliEMCalTriggerRecTrackAnalysisComponent.cxx:54 AliEMCalTriggerRecTrackAnalysisComponent.cxx:55 AliEMCalTriggerRecTrackAnalysisComponent.cxx:56 AliEMCalTriggerRecTrackAnalysisComponent.cxx:57 AliEMCalTriggerRecTrackAnalysisComponent.cxx:58 AliEMCalTriggerRecTrackAnalysisComponent.cxx:59 AliEMCalTriggerRecTrackAnalysisComponent.cxx:60 AliEMCalTriggerRecTrackAnalysisComponent.cxx:61 AliEMCalTriggerRecTrackAnalysisComponent.cxx:62 AliEMCalTriggerRecTrackAnalysisComponent.cxx:63 AliEMCalTriggerRecTrackAnalysisComponent.cxx:64 AliEMCalTriggerRecTrackAnalysisComponent.cxx:65 AliEMCalTriggerRecTrackAnalysisComponent.cxx:66 AliEMCalTriggerRecTrackAnalysisComponent.cxx:67 AliEMCalTriggerRecTrackAnalysisComponent.cxx:68 AliEMCalTriggerRecTrackAnalysisComponent.cxx:69 AliEMCalTriggerRecTrackAnalysisComponent.cxx:70 AliEMCalTriggerRecTrackAnalysisComponent.cxx:71 AliEMCalTriggerRecTrackAnalysisComponent.cxx:72 AliEMCalTriggerRecTrackAnalysisComponent.cxx:73 AliEMCalTriggerRecTrackAnalysisComponent.cxx:74 AliEMCalTriggerRecTrackAnalysisComponent.cxx:75 AliEMCalTriggerRecTrackAnalysisComponent.cxx:76 AliEMCalTriggerRecTrackAnalysisComponent.cxx:77 AliEMCalTriggerRecTrackAnalysisComponent.cxx:78 AliEMCalTriggerRecTrackAnalysisComponent.cxx:79 AliEMCalTriggerRecTrackAnalysisComponent.cxx:80 AliEMCalTriggerRecTrackAnalysisComponent.cxx:81 AliEMCalTriggerRecTrackAnalysisComponent.cxx:82 AliEMCalTriggerRecTrackAnalysisComponent.cxx:83 AliEMCalTriggerRecTrackAnalysisComponent.cxx:84 AliEMCalTriggerRecTrackAnalysisComponent.cxx:85 AliEMCalTriggerRecTrackAnalysisComponent.cxx:86 AliEMCalTriggerRecTrackAnalysisComponent.cxx:87 AliEMCalTriggerRecTrackAnalysisComponent.cxx:88 AliEMCalTriggerRecTrackAnalysisComponent.cxx:89 AliEMCalTriggerRecTrackAnalysisComponent.cxx:90 AliEMCalTriggerRecTrackAnalysisComponent.cxx:91 AliEMCalTriggerRecTrackAnalysisComponent.cxx:92 AliEMCalTriggerRecTrackAnalysisComponent.cxx:93 AliEMCalTriggerRecTrackAnalysisComponent.cxx:94 AliEMCalTriggerRecTrackAnalysisComponent.cxx:95 AliEMCalTriggerRecTrackAnalysisComponent.cxx:96 AliEMCalTriggerRecTrackAnalysisComponent.cxx:97 AliEMCalTriggerRecTrackAnalysisComponent.cxx:98 AliEMCalTriggerRecTrackAnalysisComponent.cxx:99 AliEMCalTriggerRecTrackAnalysisComponent.cxx:100 AliEMCalTriggerRecTrackAnalysisComponent.cxx:101 AliEMCalTriggerRecTrackAnalysisComponent.cxx:102 AliEMCalTriggerRecTrackAnalysisComponent.cxx:103 AliEMCalTriggerRecTrackAnalysisComponent.cxx:104 AliEMCalTriggerRecTrackAnalysisComponent.cxx:105 AliEMCalTriggerRecTrackAnalysisComponent.cxx:106 AliEMCalTriggerRecTrackAnalysisComponent.cxx:107 AliEMCalTriggerRecTrackAnalysisComponent.cxx:108 AliEMCalTriggerRecTrackAnalysisComponent.cxx:109 AliEMCalTriggerRecTrackAnalysisComponent.cxx:110 AliEMCalTriggerRecTrackAnalysisComponent.cxx:111 AliEMCalTriggerRecTrackAnalysisComponent.cxx:112 AliEMCalTriggerRecTrackAnalysisComponent.cxx:113 AliEMCalTriggerRecTrackAnalysisComponent.cxx:114 AliEMCalTriggerRecTrackAnalysisComponent.cxx:115 AliEMCalTriggerRecTrackAnalysisComponent.cxx:116 AliEMCalTriggerRecTrackAnalysisComponent.cxx:117 AliEMCalTriggerRecTrackAnalysisComponent.cxx:118 AliEMCalTriggerRecTrackAnalysisComponent.cxx:119 AliEMCalTriggerRecTrackAnalysisComponent.cxx:120 AliEMCalTriggerRecTrackAnalysisComponent.cxx:121 AliEMCalTriggerRecTrackAnalysisComponent.cxx:122 AliEMCalTriggerRecTrackAnalysisComponent.cxx:123 AliEMCalTriggerRecTrackAnalysisComponent.cxx:124 AliEMCalTriggerRecTrackAnalysisComponent.cxx:125 AliEMCalTriggerRecTrackAnalysisComponent.cxx:126 AliEMCalTriggerRecTrackAnalysisComponent.cxx:127 AliEMCalTriggerRecTrackAnalysisComponent.cxx:128 AliEMCalTriggerRecTrackAnalysisComponent.cxx:129 AliEMCalTriggerRecTrackAnalysisComponent.cxx:130 AliEMCalTriggerRecTrackAnalysisComponent.cxx:131 AliEMCalTriggerRecTrackAnalysisComponent.cxx:132 AliEMCalTriggerRecTrackAnalysisComponent.cxx:133 AliEMCalTriggerRecTrackAnalysisComponent.cxx:134 AliEMCalTriggerRecTrackAnalysisComponent.cxx:135 AliEMCalTriggerRecTrackAnalysisComponent.cxx:136 AliEMCalTriggerRecTrackAnalysisComponent.cxx:137 AliEMCalTriggerRecTrackAnalysisComponent.cxx:138 AliEMCalTriggerRecTrackAnalysisComponent.cxx:139 AliEMCalTriggerRecTrackAnalysisComponent.cxx:140 AliEMCalTriggerRecTrackAnalysisComponent.cxx:141 AliEMCalTriggerRecTrackAnalysisComponent.cxx:142 AliEMCalTriggerRecTrackAnalysisComponent.cxx:143 AliEMCalTriggerRecTrackAnalysisComponent.cxx:144 AliEMCalTriggerRecTrackAnalysisComponent.cxx:145 AliEMCalTriggerRecTrackAnalysisComponent.cxx:146 AliEMCalTriggerRecTrackAnalysisComponent.cxx:147 AliEMCalTriggerRecTrackAnalysisComponent.cxx:148 AliEMCalTriggerRecTrackAnalysisComponent.cxx:149 AliEMCalTriggerRecTrackAnalysisComponent.cxx:150 AliEMCalTriggerRecTrackAnalysisComponent.cxx:151 AliEMCalTriggerRecTrackAnalysisComponent.cxx:152 AliEMCalTriggerRecTrackAnalysisComponent.cxx:153 AliEMCalTriggerRecTrackAnalysisComponent.cxx:154 AliEMCalTriggerRecTrackAnalysisComponent.cxx:155 AliEMCalTriggerRecTrackAnalysisComponent.cxx:156 AliEMCalTriggerRecTrackAnalysisComponent.cxx:157 AliEMCalTriggerRecTrackAnalysisComponent.cxx:158 AliEMCalTriggerRecTrackAnalysisComponent.cxx:159 AliEMCalTriggerRecTrackAnalysisComponent.cxx:160 AliEMCalTriggerRecTrackAnalysisComponent.cxx:161 AliEMCalTriggerRecTrackAnalysisComponent.cxx:162 AliEMCalTriggerRecTrackAnalysisComponent.cxx:163 AliEMCalTriggerRecTrackAnalysisComponent.cxx:164 AliEMCalTriggerRecTrackAnalysisComponent.cxx:165 AliEMCalTriggerRecTrackAnalysisComponent.cxx:166 AliEMCalTriggerRecTrackAnalysisComponent.cxx:167 AliEMCalTriggerRecTrackAnalysisComponent.cxx:168 AliEMCalTriggerRecTrackAnalysisComponent.cxx:169 AliEMCalTriggerRecTrackAnalysisComponent.cxx:170 AliEMCalTriggerRecTrackAnalysisComponent.cxx:171 AliEMCalTriggerRecTrackAnalysisComponent.cxx:172 AliEMCalTriggerRecTrackAnalysisComponent.cxx:173 AliEMCalTriggerRecTrackAnalysisComponent.cxx:174 AliEMCalTriggerRecTrackAnalysisComponent.cxx:175 AliEMCalTriggerRecTrackAnalysisComponent.cxx:176 AliEMCalTriggerRecTrackAnalysisComponent.cxx:177 AliEMCalTriggerRecTrackAnalysisComponent.cxx:178 AliEMCalTriggerRecTrackAnalysisComponent.cxx:179 AliEMCalTriggerRecTrackAnalysisComponent.cxx:180 AliEMCalTriggerRecTrackAnalysisComponent.cxx:181 AliEMCalTriggerRecTrackAnalysisComponent.cxx:182 AliEMCalTriggerRecTrackAnalysisComponent.cxx:183 AliEMCalTriggerRecTrackAnalysisComponent.cxx:184 AliEMCalTriggerRecTrackAnalysisComponent.cxx:185 AliEMCalTriggerRecTrackAnalysisComponent.cxx:186 AliEMCalTriggerRecTrackAnalysisComponent.cxx:187 AliEMCalTriggerRecTrackAnalysisComponent.cxx:188 AliEMCalTriggerRecTrackAnalysisComponent.cxx:189 AliEMCalTriggerRecTrackAnalysisComponent.cxx:190 AliEMCalTriggerRecTrackAnalysisComponent.cxx:191 AliEMCalTriggerRecTrackAnalysisComponent.cxx:192 AliEMCalTriggerRecTrackAnalysisComponent.cxx:193 AliEMCalTriggerRecTrackAnalysisComponent.cxx:194 AliEMCalTriggerRecTrackAnalysisComponent.cxx:195 AliEMCalTriggerRecTrackAnalysisComponent.cxx:196 AliEMCalTriggerRecTrackAnalysisComponent.cxx:197 AliEMCalTriggerRecTrackAnalysisComponent.cxx:198 AliEMCalTriggerRecTrackAnalysisComponent.cxx:199 AliEMCalTriggerRecTrackAnalysisComponent.cxx:200 AliEMCalTriggerRecTrackAnalysisComponent.cxx:201 AliEMCalTriggerRecTrackAnalysisComponent.cxx:202 AliEMCalTriggerRecTrackAnalysisComponent.cxx:203 AliEMCalTriggerRecTrackAnalysisComponent.cxx:204 AliEMCalTriggerRecTrackAnalysisComponent.cxx:205 AliEMCalTriggerRecTrackAnalysisComponent.cxx:206 AliEMCalTriggerRecTrackAnalysisComponent.cxx:207 AliEMCalTriggerRecTrackAnalysisComponent.cxx:208 AliEMCalTriggerRecTrackAnalysisComponent.cxx:209 AliEMCalTriggerRecTrackAnalysisComponent.cxx:210 AliEMCalTriggerRecTrackAnalysisComponent.cxx:211 AliEMCalTriggerRecTrackAnalysisComponent.cxx:212 AliEMCalTriggerRecTrackAnalysisComponent.cxx:213 AliEMCalTriggerRecTrackAnalysisComponent.cxx:214