#include <TLorentzVector.h>
#include <TMath.h>
#include <TF1.h>
#include "AliVEvent.h"
#include "AliVCluster.h"
#include "AliEmcalJet.h"
#include "AliLog.h"
#include "AliVVZERO.h"
#include "AliESDUtils.h"
#include "AliJetTriggerSelectionTask.h"
ClassImp(AliJetTriggerSelectionTask)
AliJetTriggerSelectionTask::AliJetTriggerSelectionTask() :
AliAnalysisTaskEmcalJet("AliJetTriggerSelectionTask", kFALSE),
fEnergyThreshold(0),
fMaxDistance2(0.0225),
fTriggerBits(AliVEvent::kEMCEJE),
fTaskSettingsOk(kFALSE),
fNTriggers(0),
fVZERO(0),
fV0ATotMult(0),
fV0CTotMult(0)
{
for (Int_t i = 0; i < 999; i++) {
fTrigPos[i][0] = -999;
fTrigPos[i][1] = -999;
}
}
AliJetTriggerSelectionTask::AliJetTriggerSelectionTask(const char *name) :
AliAnalysisTaskEmcalJet(name, kFALSE),
fEnergyThreshold(0),
fMaxDistance2(0.0225),
fTriggerBits(AliVEvent::kEMCEJE),
fTaskSettingsOk(kFALSE),
fNTriggers(0),
fVZERO(0),
fV0ATotMult(0),
fV0CTotMult(0)
{
for (Int_t i = 0; i < 999; i++) {
fTrigPos[i][0] = -999;
fTrigPos[i][1] = -999;
}
}
void AliJetTriggerSelectionTask::ExecOnce()
{
AliAnalysisTaskEmcalJet::ExecOnce();
fTaskSettingsOk = kTRUE;
fVZERO = InputEvent()->GetVZEROData();
if (!fVZERO) {
AliError(Form("%s: AliVVZERO not available, task will not be executed!",GetName()));
fTaskSettingsOk = kFALSE;
}
if (GetClusterArray() == 0) {
AliError(Form("%s: No cluster collection provided, task will not be executed!",GetName()));
fTaskSettingsOk = kFALSE;
}
if (GetJetArray() == 0) {
AliError(Form("%s: No jet collection provided, task will not be executed!",GetName()));
fTaskSettingsOk = kFALSE;
}
if (!fEnergyThreshold) {
AliError(Form("%s: No threshold function provided, task will not be executed!",GetName()));
fTaskSettingsOk = kFALSE;
}
}
Bool_t AliJetTriggerSelectionTask::RetrieveEventObjects()
{
if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
return kFALSE;
if (fVZERO) {
fV0ATotMult = fVZERO->GetMTotV0A();
fV0CTotMult = fVZERO->GetMTotV0C();
}
return kTRUE;
}
Bool_t AliJetTriggerSelectionTask::Run()
{
if (!fTaskSettingsOk) return kFALSE;
FindTriggers();
SelectJets();
return kTRUE;
}
void AliJetTriggerSelectionTask::FindTriggers()
{
fNTriggers = 0;
Int_t nclusters = GetNClusters();
Double_t th = fEnergyThreshold->Eval(fV0ATotMult+fV0CTotMult);
for (Int_t i = 0; i < nclusters; i++) {
if (fNTriggers >= 999) {
AliError("More than 999 triggers found!");
break;
}
AliVCluster *cluster = GetAcceptClusterFromArray(i);
if (!cluster)
continue;
if (cluster->E() > th) {
TLorentzVector vect;
cluster->GetMomentum(vect,fVertex);
fTrigPos[fNTriggers][0] = vect.Eta();
fTrigPos[fNTriggers][1] = vect.Phi();
fNTriggers++;
}
}
AliDebug(2,Form("%s: %d triggers found among %d candidates (cent=%.1f, mult=%.1f, th=%.2f)!",GetName(),fNTriggers,nclusters,fCent,fV0ATotMult+fV0CTotMult,th));
}
void AliJetTriggerSelectionTask::SelectJets()
{
for (Int_t c = 0; c < fJetCollArray.GetEntriesFast(); c++) {
Int_t njets = GetNJets(c);
for (Int_t i = 0; i < njets; i++) {
AliEmcalJet *jet = GetAcceptJetFromArray(i,c);
if (IsTriggerJet(jet)) jet->AddTrigger(fTriggerBits);
}
}
}
Bool_t AliJetTriggerSelectionTask::IsTriggerJet(AliEmcalJet *jet)
{
if (!jet) return kFALSE;
for (Int_t i = 0; i < fNTriggers; i++) {
Double_t deta = jet->Eta() - fTrigPos[i][0];
Double_t dphi = jet->Phi() - fTrigPos[i][1];
Double_t d2 = deta * deta + dphi * dphi;
if (d2 < fMaxDistance2)
return kTRUE;
}
return kFALSE;
}
AliJetTriggerSelectionTask.cxx:1 AliJetTriggerSelectionTask.cxx:2 AliJetTriggerSelectionTask.cxx:3 AliJetTriggerSelectionTask.cxx:4 AliJetTriggerSelectionTask.cxx:5 AliJetTriggerSelectionTask.cxx:6 AliJetTriggerSelectionTask.cxx:7 AliJetTriggerSelectionTask.cxx:8 AliJetTriggerSelectionTask.cxx:9 AliJetTriggerSelectionTask.cxx:10 AliJetTriggerSelectionTask.cxx:11 AliJetTriggerSelectionTask.cxx:12 AliJetTriggerSelectionTask.cxx:13 AliJetTriggerSelectionTask.cxx:14 AliJetTriggerSelectionTask.cxx:15 AliJetTriggerSelectionTask.cxx:16 AliJetTriggerSelectionTask.cxx:17 AliJetTriggerSelectionTask.cxx:18 AliJetTriggerSelectionTask.cxx:19 AliJetTriggerSelectionTask.cxx:20 AliJetTriggerSelectionTask.cxx:21 AliJetTriggerSelectionTask.cxx:22 AliJetTriggerSelectionTask.cxx:23 AliJetTriggerSelectionTask.cxx:24 AliJetTriggerSelectionTask.cxx:25 AliJetTriggerSelectionTask.cxx:26 AliJetTriggerSelectionTask.cxx:27 AliJetTriggerSelectionTask.cxx:28 AliJetTriggerSelectionTask.cxx:29 AliJetTriggerSelectionTask.cxx:30 AliJetTriggerSelectionTask.cxx:31 AliJetTriggerSelectionTask.cxx:32 AliJetTriggerSelectionTask.cxx:33 AliJetTriggerSelectionTask.cxx:34 AliJetTriggerSelectionTask.cxx:35 AliJetTriggerSelectionTask.cxx:36 AliJetTriggerSelectionTask.cxx:37 AliJetTriggerSelectionTask.cxx:38 AliJetTriggerSelectionTask.cxx:39 AliJetTriggerSelectionTask.cxx:40 AliJetTriggerSelectionTask.cxx:41 AliJetTriggerSelectionTask.cxx:42 AliJetTriggerSelectionTask.cxx:43 AliJetTriggerSelectionTask.cxx:44 AliJetTriggerSelectionTask.cxx:45 AliJetTriggerSelectionTask.cxx:46 AliJetTriggerSelectionTask.cxx:47 AliJetTriggerSelectionTask.cxx:48 AliJetTriggerSelectionTask.cxx:49 AliJetTriggerSelectionTask.cxx:50 AliJetTriggerSelectionTask.cxx:51 AliJetTriggerSelectionTask.cxx:52 AliJetTriggerSelectionTask.cxx:53 AliJetTriggerSelectionTask.cxx:54 AliJetTriggerSelectionTask.cxx:55 AliJetTriggerSelectionTask.cxx:56 AliJetTriggerSelectionTask.cxx:57 AliJetTriggerSelectionTask.cxx:58 AliJetTriggerSelectionTask.cxx:59 AliJetTriggerSelectionTask.cxx:60 AliJetTriggerSelectionTask.cxx:61 AliJetTriggerSelectionTask.cxx:62 AliJetTriggerSelectionTask.cxx:63 AliJetTriggerSelectionTask.cxx:64 AliJetTriggerSelectionTask.cxx:65 AliJetTriggerSelectionTask.cxx:66 AliJetTriggerSelectionTask.cxx:67 AliJetTriggerSelectionTask.cxx:68 AliJetTriggerSelectionTask.cxx:69 AliJetTriggerSelectionTask.cxx:70 AliJetTriggerSelectionTask.cxx:71 AliJetTriggerSelectionTask.cxx:72 AliJetTriggerSelectionTask.cxx:73 AliJetTriggerSelectionTask.cxx:74 AliJetTriggerSelectionTask.cxx:75 AliJetTriggerSelectionTask.cxx:76 AliJetTriggerSelectionTask.cxx:77 AliJetTriggerSelectionTask.cxx:78 AliJetTriggerSelectionTask.cxx:79 AliJetTriggerSelectionTask.cxx:80 AliJetTriggerSelectionTask.cxx:81 AliJetTriggerSelectionTask.cxx:82 AliJetTriggerSelectionTask.cxx:83 AliJetTriggerSelectionTask.cxx:84 AliJetTriggerSelectionTask.cxx:85 AliJetTriggerSelectionTask.cxx:86 AliJetTriggerSelectionTask.cxx:87 AliJetTriggerSelectionTask.cxx:88 AliJetTriggerSelectionTask.cxx:89 AliJetTriggerSelectionTask.cxx:90 AliJetTriggerSelectionTask.cxx:91 AliJetTriggerSelectionTask.cxx:92 AliJetTriggerSelectionTask.cxx:93 AliJetTriggerSelectionTask.cxx:94 AliJetTriggerSelectionTask.cxx:95 AliJetTriggerSelectionTask.cxx:96 AliJetTriggerSelectionTask.cxx:97 AliJetTriggerSelectionTask.cxx:98 AliJetTriggerSelectionTask.cxx:99 AliJetTriggerSelectionTask.cxx:100 AliJetTriggerSelectionTask.cxx:101 AliJetTriggerSelectionTask.cxx:102 AliJetTriggerSelectionTask.cxx:103 AliJetTriggerSelectionTask.cxx:104 AliJetTriggerSelectionTask.cxx:105 AliJetTriggerSelectionTask.cxx:106 AliJetTriggerSelectionTask.cxx:107 AliJetTriggerSelectionTask.cxx:108 AliJetTriggerSelectionTask.cxx:109 AliJetTriggerSelectionTask.cxx:110 AliJetTriggerSelectionTask.cxx:111 AliJetTriggerSelectionTask.cxx:112 AliJetTriggerSelectionTask.cxx:113 AliJetTriggerSelectionTask.cxx:114 AliJetTriggerSelectionTask.cxx:115 AliJetTriggerSelectionTask.cxx:116 AliJetTriggerSelectionTask.cxx:117 AliJetTriggerSelectionTask.cxx:118 AliJetTriggerSelectionTask.cxx:119 AliJetTriggerSelectionTask.cxx:120 AliJetTriggerSelectionTask.cxx:121 AliJetTriggerSelectionTask.cxx:122 AliJetTriggerSelectionTask.cxx:123 AliJetTriggerSelectionTask.cxx:124 AliJetTriggerSelectionTask.cxx:125 AliJetTriggerSelectionTask.cxx:126 AliJetTriggerSelectionTask.cxx:127 AliJetTriggerSelectionTask.cxx:128 AliJetTriggerSelectionTask.cxx:129 AliJetTriggerSelectionTask.cxx:130 AliJetTriggerSelectionTask.cxx:131 AliJetTriggerSelectionTask.cxx:132 AliJetTriggerSelectionTask.cxx:133 AliJetTriggerSelectionTask.cxx:134 AliJetTriggerSelectionTask.cxx:135 AliJetTriggerSelectionTask.cxx:136 AliJetTriggerSelectionTask.cxx:137 AliJetTriggerSelectionTask.cxx:138 AliJetTriggerSelectionTask.cxx:139 AliJetTriggerSelectionTask.cxx:140 AliJetTriggerSelectionTask.cxx:141 AliJetTriggerSelectionTask.cxx:142 AliJetTriggerSelectionTask.cxx:143 AliJetTriggerSelectionTask.cxx:144 AliJetTriggerSelectionTask.cxx:145 AliJetTriggerSelectionTask.cxx:146 AliJetTriggerSelectionTask.cxx:147 AliJetTriggerSelectionTask.cxx:148 AliJetTriggerSelectionTask.cxx:149 AliJetTriggerSelectionTask.cxx:150 AliJetTriggerSelectionTask.cxx:151 AliJetTriggerSelectionTask.cxx:152 AliJetTriggerSelectionTask.cxx:153 AliJetTriggerSelectionTask.cxx:154 AliJetTriggerSelectionTask.cxx:155 AliJetTriggerSelectionTask.cxx:156 AliJetTriggerSelectionTask.cxx:157 AliJetTriggerSelectionTask.cxx:158 AliJetTriggerSelectionTask.cxx:159 AliJetTriggerSelectionTask.cxx:160 AliJetTriggerSelectionTask.cxx:161 AliJetTriggerSelectionTask.cxx:162 AliJetTriggerSelectionTask.cxx:163 AliJetTriggerSelectionTask.cxx:164 AliJetTriggerSelectionTask.cxx:165 AliJetTriggerSelectionTask.cxx:166 AliJetTriggerSelectionTask.cxx:167 AliJetTriggerSelectionTask.cxx:168 AliJetTriggerSelectionTask.cxx:169 AliJetTriggerSelectionTask.cxx:170 AliJetTriggerSelectionTask.cxx:171 AliJetTriggerSelectionTask.cxx:172 AliJetTriggerSelectionTask.cxx:173 AliJetTriggerSelectionTask.cxx:174 AliJetTriggerSelectionTask.cxx:175 AliJetTriggerSelectionTask.cxx:176 AliJetTriggerSelectionTask.cxx:177 AliJetTriggerSelectionTask.cxx:178 AliJetTriggerSelectionTask.cxx:179 AliJetTriggerSelectionTask.cxx:180 AliJetTriggerSelectionTask.cxx:181 AliJetTriggerSelectionTask.cxx:182 AliJetTriggerSelectionTask.cxx:183 AliJetTriggerSelectionTask.cxx:184 AliJetTriggerSelectionTask.cxx:185