ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1::jFEXForwardJetsAlgo Class Reference

#include <jFEXForwardJetsAlgo.h>

Inheritance diagram for LVL1::jFEXForwardJetsAlgo:
Collaboration diagram for LVL1::jFEXForwardJetsAlgo:

Public Member Functions

 jFEXForwardJetsAlgo (const std::string &type, const std::string &name, const IInterface *parent)
 Constructors.
virtual StatusCode initialize () override
 standard Athena-Algorithm method
virtual ~jFEXForwardJetsAlgo ()
 Destructor.
virtual StatusCode safetyTest () override
virtual StatusCode reset () override
virtual void setup (int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex) override
virtual std::unordered_map< int, jFEXForwardJetsInfoFcalJetsTowerIDLists (int seedThreshold) override
virtual std::unordered_map< int, jFEXForwardJetsInfocalculateJetETs (int seedThreshold) override
virtual void setFPGAEnergy (std::unordered_map< int, std::vector< int > > et_map) override
virtual int SumEtSeed (unsigned int TTID) const override
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode ReadfromFile (const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
int getEt (unsigned int TTID) const
bool isLM (unsigned int TTID) const
bool isLMabove (unsigned int TTID) const
bool getTTowerSat (unsigned int TTID)
unsigned int elementsCorr (unsigned int TTID) const
bool condCorr (unsigned int TTID) const
unsigned int elementsCorr2 (unsigned int TTID) const
bool condCorr2 (unsigned int TTID) const
std::array< float, 2 > globalEtaPhi (int TTID)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< LVL1::jTowerContainerm_jFEXForwardJetsAlgo_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"}
SG::ReadHandle< jTowerContainerm_jTowerContainer
int m_jFEXalgoTowerID [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
std::unordered_map< int, std::vector< int > > m_map_Etvalues
int m_lowerEM_eta
int m_upperEM_eta
int m_jfex
bool m_storeEnergyRingTTIDs = true
Gaudi::Property< std::string > m_SeedRingStr {this, "SeedRingMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_seed.dat" , "Contains Trigger tower in seed"}
Gaudi::Property< std::string > m_1stRingStr {this, "Energy1stRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_1stRing.dat" , "Contains Trigger tower in 1st Energy ring"}
Gaudi::Property< std::string > m_2ndRingStr {this, "Energy2ndRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_2ndRing.dat" , "Contains Trigger tower in 2nd energy ring"}
Gaudi::Property< std::string > m_CorrStr {this, "CorrMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr.dat" , "Contains Trigger tower to correct displacement (greater than)"}
Gaudi::Property< std::string > m_Corr2Str {this, "Corr2Map" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr2.dat" , "Contains Trigger tower to correct displacement (greater or equal than)"}
Gaudi::Property< std::string > m_SearchGStr {this, "SearchGMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchG.dat" , "Contains Trigger tower to find local max (greater than)"}
Gaudi::Property< std::string > m_SearchGeStr {this, "SearchGeMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGe.dat", "Contains Trigger tower to find local max (greater or equal than)"}
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SeedRingMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_1stRingMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_2ndRingMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_CorrMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Corr2Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeMap
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 23 of file jFEXForwardJetsAlgo.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ jFEXForwardJetsAlgo()

LVL1::jFEXForwardJetsAlgo::jFEXForwardJetsAlgo ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructors.

Definition at line 26 of file jFEXForwardJetsAlgo.cxx.

26 :
27 AthAlgTool(type, name, parent)
28 {
29 declareInterface<IjFEXForwardJetsAlgo>(this);
30 }
AthAlgTool()
Default constructor:

◆ ~jFEXForwardJetsAlgo()

LVL1::jFEXForwardJetsAlgo::~jFEXForwardJetsAlgo ( )
virtual

Destructor.

Definition at line 33 of file jFEXForwardJetsAlgo.cxx.

34{
35}

Member Function Documentation

◆ calculateJetETs()

std::unordered_map< int, jFEXForwardJetsInfo > LVL1::jFEXForwardJetsAlgo::calculateJetETs ( int seedThreshold)
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 415 of file jFEXForwardJetsAlgo.cxx.

415 {
416
417 std::unordered_map<int, jFEXForwardJetsInfo> localMaximas = FcalJetsTowerIDLists(seedThreshold);
418 return localMaximas;
419}
virtual std::unordered_map< int, jFEXForwardJetsInfo > FcalJetsTowerIDLists(int seedThreshold) override

◆ condCorr()

bool LVL1::jFEXForwardJetsAlgo::condCorr ( unsigned int TTID) const
private

Definition at line 349 of file jFEXForwardJetsAlgo.cxx.

349 {
350
351 // Exists the jTower in the correction tower map?
352 auto it_seed_map = m_CorrMap.find(TTID);
353 if(it_seed_map == m_CorrMap.end()) {
354 ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
355 return false;
356 }
357
358 // If there is no TT to check then the Et of central is always bigger :D
359 if( (it_seed_map->second).size() == 0){
360 ATH_MSG_ERROR("Elements=0 in condCorr function for element"<< TTID <<". This should never happend. REPORT IT!");
361 return true;
362 }
363
364 int centralEt = getEt(TTID);
365 int centralSeed = SumEtSeed(TTID);
366 for (const auto& Gtt : it_seed_map->second ){
367 //Checking if central Et is always strictly greater than the previous TT Et
368 int tmpEt = getEt(Gtt);
369 int tmpSeedEt = SumEtSeed(Gtt);
370 if( !(centralEt > tmpEt && centralSeed >= tmpSeedEt ) ){
371 return false;
372 }
373 }
374
375 return true;
376
377}
#define ATH_MSG_ERROR(x)
int getEt(unsigned int TTID) const
virtual int SumEtSeed(unsigned int TTID) const override
std::unordered_map< unsigned int, std::vector< unsigned int > > m_CorrMap

◆ condCorr2()

bool LVL1::jFEXForwardJetsAlgo::condCorr2 ( unsigned int TTID) const
private

Definition at line 389 of file jFEXForwardJetsAlgo.cxx.

389 {
390
391 // Exists the jTower in the correction tower map?
392 auto it_seed_map = m_Corr2Map.find(TTID);
393 if(it_seed_map == m_Corr2Map.end()) {
394 ATH_MSG_ERROR("Could not find TT" << TTID << " in the correction (greater or equal) file.");
395 return false;
396 }
397
398 int centralEt = getEt(TTID);
399 int centralSeed = SumEtSeed(TTID);
400
401 for (const auto& Gtt : it_seed_map->second ){
402 //Checking if central Et is always greater or equal than the previous TT Et
403 int tmpEt = getEt(Gtt);
404
405 //(central >= 1stElem or seedcentral > seed1stElem) and ( central >= 2stElem or seedcentral > seed2stElem)
406 if( !( centralEt >= tmpEt || centralSeed > SumEtSeed(Gtt) ) ){
407 return false;
408 }
409 }
410
411 return true;
412
413}
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Corr2Map

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ elementsCorr()

unsigned int LVL1::jFEXForwardJetsAlgo::elementsCorr ( unsigned int TTID) const
private

Definition at line 339 of file jFEXForwardJetsAlgo.cxx.

339 {
340 auto it_seed_map = m_CorrMap.find(TTID);
341 if(it_seed_map == m_CorrMap.end()) {
342 ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
343 return 0;
344 }
345
346 return (it_seed_map->second).size();
347}

◆ elementsCorr2()

unsigned int LVL1::jFEXForwardJetsAlgo::elementsCorr2 ( unsigned int TTID) const
private

Definition at line 379 of file jFEXForwardJetsAlgo.cxx.

379 {
380 auto it_seed_map = m_Corr2Map.find(TTID);
381 if(it_seed_map == m_Corr2Map.end()) {
382 ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
383 return 0;
384 }
385
386 return (it_seed_map->second).size();
387}

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ FcalJetsTowerIDLists()

std::unordered_map< int, jFEXForwardJetsInfo > LVL1::jFEXForwardJetsAlgo::FcalJetsTowerIDLists ( int seedThreshold)
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 98 of file jFEXForwardJetsAlgo.cxx.

98 {
99
100 std::unordered_map<int, jFEXForwardJetsInfo> FCALJetTowerIDLists;
101
102 std::vector<int> lower_centre_neta;
103 std::vector<int> upper_centre_neta;
104 m_lowerEM_eta = 0;
105 m_upperEM_eta = 0;
106
107 //STEP 1: check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters
108 if(m_jfex == 0) {
109 //Module 0
114 }
115 else {
116 //Module 5
119
122
123 }
124
125
126
127 //STEP 2: define phi FEXAlgoSpace parameters
130
131 //STEP 3: loop over different EM/FCAL0 eta phi core fpga regions. These are potential central trigger towers for jets
132 for(int myCounter = 0; myCounter<3; myCounter++) {
133 for(int centre_nphi = lower_centre_nphi[myCounter]; centre_nphi < upper_centre_nphi[myCounter]; centre_nphi++) {
134 for(int centre_neta = lower_centre_neta[myCounter]; centre_neta < upper_centre_neta[myCounter]; centre_neta++) {
135
136 //STEP 4: define TTID which will be the key for class in map
137 int myTTIDKey = m_jFEXalgoTowerID[centre_nphi][centre_neta];
138
139 //STEP 5: ignore when tower ID is zero. Should not happend though
140 if(myTTIDKey == 0) {
141 continue;
142 }
143 bool iAmJet = false;
144 bool bool_isLM = false;
145 bool bool_condCorr2 = false;
146 bool bool_isLMabove = false;
147 bool bool_condCorr = false;
148
149 //Know which condition should satisfy
150 unsigned int elemCorr = elementsCorr(myTTIDKey);
151 unsigned int elemCorr2 = elementsCorr2(myTTIDKey);
152
153 if(elemCorr == 0 and elemCorr2 == 0){
154 bool_isLM = isLM(myTTIDKey);
155 iAmJet = bool_isLM;
156 }
157 else if(elemCorr == 0 and elemCorr2 > 0){
158 bool_isLM = isLM(myTTIDKey);
159 bool_condCorr2 = condCorr2(myTTIDKey);
160 iAmJet = bool_isLM and bool_condCorr2;
161 }
162 else if(elemCorr > 0 and elemCorr2 == 0){
163 bool_isLM = isLM(myTTIDKey);
164 bool_isLMabove = isLMabove(myTTIDKey);
165 bool_condCorr = condCorr(myTTIDKey);
166 iAmJet = bool_isLM or (bool_isLMabove and bool_condCorr);
167 }
168 else if(elemCorr > 0 and elemCorr2 > 0){
169 bool_isLM = isLM(myTTIDKey);
170 bool_condCorr2 = condCorr2(myTTIDKey);
171 bool_isLMabove = isLMabove(myTTIDKey);
172 bool_condCorr = condCorr(myTTIDKey);
173 iAmJet = (bool_isLM and bool_condCorr2) or (bool_isLMabove and bool_condCorr);
174 }
175
176 //veto seeds below seed threshold
177 if (SumEtSeed(myTTIDKey) <= seedThreshold){
178 iAmJet = false;
179 }
180
181 if(iAmJet){
182
183 //STEP 6: define class
184 jFEXForwardJetsInfo TriggerTowerInformation;
185
186 TriggerTowerInformation.setCentreLocalTTPhi(centre_nphi);
187 TriggerTowerInformation.setCentreLocalTTEta(centre_neta);
188
189 const auto [centreTT_eta,centreTT_phi] = globalEtaPhi(myTTIDKey);
190 TriggerTowerInformation.setCentreTTPhi(centreTT_phi);
191 TriggerTowerInformation.setCentreTTEta(centreTT_eta);
192
193
194 //STEP 7: Filling energies
195 int saturation = 0;
196 // Seed
197 auto it_seed_map = m_SeedRingMap.find(myTTIDKey);
198 if(it_seed_map == m_SeedRingMap.end()) {
199 ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in Jet seed file.");
200 }
201
202 for(const auto& seedTT : it_seed_map->second){
203 TriggerTowerInformation.includeTTinSeed(seedTT);
204 saturation = saturation || getTTowerSat(seedTT);
205 TriggerTowerInformation.addToSeedET(getEt(seedTT));
206 }
207
208 // 1st Energy Ring!
209 it_seed_map = m_1stRingMap.find(myTTIDKey);
210 if(it_seed_map == m_1stRingMap.end()) {
211 ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in 1st Energy ring file.");
212 }
213
214 for(const auto& firstER_TT : it_seed_map->second){
215 TriggerTowerInformation.addToFirstEnergyRingET(getEt(firstER_TT));
216 saturation = saturation || getTTowerSat(firstER_TT);
218 TriggerTowerInformation.includeTTIDinFirstER(firstER_TT);
219 }
220 }
221
222 //setting saturation for jJ
223 if(saturation) TriggerTowerInformation.setSRjetSat();
224
225
226 // 2nd Energy Ring!
227 it_seed_map = m_2ndRingMap.find(myTTIDKey);
228 if(it_seed_map == m_2ndRingMap.end()) {
229 ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in 2nd Energy ring file.");
230 }
231
232 for(const auto& secondER_TT : it_seed_map->second){
233 TriggerTowerInformation.addToSecondEnergyRingET(getEt(secondER_TT));
234 saturation = saturation || getTTowerSat(secondER_TT);
236 TriggerTowerInformation.includeTTIDinSecondER(secondER_TT);
237 }
238 }
239
240 //setting saturation for jLJ
241 if(saturation) TriggerTowerInformation.setLRjetSat();
242
243 // Storing all jets in the same map!
244 FCALJetTowerIDLists[myTTIDKey] = std::move(TriggerTowerInformation);
245 }
246
247 }//end of centre_neta loop
248 }//end of centre_nphi loop
249 }//end of myCounter loop
250
251 return FCALJetTowerIDLists;
252}
static constexpr int jFEX_algoSpace_C_EMB_start_eta
static constexpr int jFEX_algoSpace_A_FCAL_end_eta
static constexpr int jFEX_algoSpace_C_EMB_end_eta
static constexpr int jFEX_algoSpace_EMIE_end_phi
static constexpr int jFEX_algoSpace_C_FCAL_end_eta
static constexpr int jFEX_algoSpace_A_upperEM_eta
static constexpr int jFEX_algoSpace_A_EMB_eta
static constexpr int jFEX_algoSpace_A_FCAL_start_eta
static constexpr int jFEX_algoSpace_C_upperEM_eta
static constexpr int jFEX_algoSpace_C_FCAL_start_eta
static constexpr int jFEX_algoSpace_A_EMIE_eta
static constexpr int jFEX_algoSpace_A_lowerEM_eta
static constexpr int jFEX_algoSpace_FCAL_end_phi
static constexpr int jFEX_algoSpace_EMB_end_phi
static constexpr int jFEX_algoSpace_FCAL_start_phi
static constexpr int jFEX_algoSpace_EMIE_start_phi
static constexpr int jFEX_algoSpace_EMB_start_phi
static constexpr int jFEX_algoSpace_C_lowerEM_eta
static constexpr int jFEX_algoSpace_C_EMIE_start_eta
static constexpr int jFEX_algoSpace_C_EMIE_end_eta
bool condCorr(unsigned int TTID) const
unsigned int elementsCorr2(unsigned int TTID) const
std::unordered_map< unsigned int, std::vector< unsigned int > > m_2ndRingMap
std::array< float, 2 > globalEtaPhi(int TTID)
std::unordered_map< unsigned int, std::vector< unsigned int > > m_1stRingMap
bool getTTowerSat(unsigned int TTID)
bool isLM(unsigned int TTID) const
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
bool condCorr2(unsigned int TTID) const
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SeedRingMap
bool isLMabove(unsigned int TTID) const
unsigned int elementsCorr(unsigned int TTID) const

◆ getEt()

int LVL1::jFEXForwardJetsAlgo::getEt ( unsigned int TTID) const
private

Definition at line 84 of file jFEXForwardJetsAlgo.cxx.

84 {
85 if(TTID == 0) {
86 return -999;
87 }
88
89 auto itr = m_map_Etvalues.find(TTID);
90
91 if( itr == m_map_Etvalues.end()) {
92 return -999;
93 }
94
95 return itr->second[0];
96}
std::unordered_map< int, std::vector< int > > m_map_Etvalues

◆ getTTowerSat()

bool LVL1::jFEXForwardJetsAlgo::getTTowerSat ( unsigned int TTID)
private

Definition at line 427 of file jFEXForwardJetsAlgo.cxx.

427 {
428 if(TTID == 0) {
429 return false;
430 }
431
432 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(TTID);
433 return tmpTower->getTowerSat();
434}
SG::ReadHandle< jTowerContainer > m_jTowerContainer
bool getTowerSat() const
Definition jTower.h:61

◆ globalEtaPhi()

std::array< float, 2 > LVL1::jFEXForwardJetsAlgo::globalEtaPhi ( int TTID)
private

Definition at line 75 of file jFEXForwardJetsAlgo.cxx.

75 {
76 if(TTID == 0) {
77 return {999,999};
78 }
79
80 const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
81 return {tmpTower->centreEta(),tmpTower->centrephi_toPI()};
82}
float centreEta() const
Definition jTower.h:79
float centrephi_toPI() const
Definition jTower.h:81

◆ initialize()

StatusCode LVL1::jFEXForwardJetsAlgo::initialize ( )
overridevirtual

standard Athena-Algorithm method

Definition at line 36 of file jFEXForwardJetsAlgo.cxx.

36 {
37
39
47
48 return StatusCode::SUCCESS;
49
50}
#define ATH_CHECK
Evaluate an expression and check for errors.
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGMap
Gaudi::Property< std::string > m_2ndRingStr
Gaudi::Property< std::string > m_Corr2Str
Gaudi::Property< std::string > m_CorrStr
Gaudi::Property< std::string > m_SeedRingStr
Gaudi::Property< std::string > m_1stRingStr
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeMap
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
SG::ReadHandleKey< LVL1::jTowerContainer > m_jFEXForwardJetsAlgo_jTowerContainerKey
Gaudi::Property< std::string > m_SearchGStr
Gaudi::Property< std::string > m_SearchGeStr
static std::string find_calib_file(const std::string &logical_file_name)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & LVL1::IjFEXForwardJetsAlgo::interfaceID ( )
inlinestaticinherited

Definition at line 42 of file IjFEXForwardJetsAlgo.h.

43 {
45 }
static const InterfaceID IID_IjFEXForwardJetsAlgo("LVL1::IjFEXForwardJetsAlgo", 1, 0)

◆ isLM()

bool LVL1::jFEXForwardJetsAlgo::isLM ( unsigned int TTID) const
private

Definition at line 274 of file jFEXForwardJetsAlgo.cxx.

274 {
275
276 int CentralSeedEt = SumEtSeed(TTID);
277
278 // Exists the jTower in the seach (greater than) tower map?
279 auto it_seed_map = m_SearchGMap.find(TTID);
280 if(it_seed_map == m_SearchGMap.end()) {
281 ATH_MSG_ERROR("Could not find TT" << TTID << " in the search (>) local maxima for jets file.");
282 return false;
283 }
284
285 bool greater = true;
286 for (const auto& Gtt : it_seed_map->second ){
287 //checking if the Central seed has strictly more energy than its neighbours
288 int tmpEt = SumEtSeed(Gtt);
289 if( !(CentralSeedEt > tmpEt) ){
290 greater = false;
291 break;
292 }
293 }
294
295 //No need to continue.. Not a LM
296 if(!greater){
297 return false;
298 }
299
300 // Exists the jTower in the seach (greater or equal than) tower map?
301 it_seed_map = m_SearchGeMap.find(TTID);
302 if(it_seed_map == m_SearchGeMap.end()) {
303 ATH_MSG_ERROR("Could not find TT" << TTID << " in the seach (>=) local maxima for jets file.");
304 return false;
305 }
306
307 bool greaterEqual = true;
308 for (const auto& Gtt : it_seed_map->second ){
309 //checking if the Central seed has more energy or equal than its neighbours
310 int tmpEt = SumEtSeed(Gtt);
311 if( !(CentralSeedEt >= tmpEt) ){
312 greaterEqual = false;
313 break;
314 }
315 }
316
317 //Not a LM
318 if(!greaterEqual){
319 return false;
320 }
321 return true;
322}
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition fpcompare.h:140

◆ isLMabove()

bool LVL1::jFEXForwardJetsAlgo::isLMabove ( unsigned int TTID) const
private

Definition at line 324 of file jFEXForwardJetsAlgo.cxx.

324 {
325
326 // Exists the jTower in the correction tower map?
327 auto it_seed_map = m_CorrMap.find(TTID);
328 if(it_seed_map == m_CorrMap.end()) {
329 ATH_MSG_ERROR("Could not find TT" << TTID << " in the correction (LM above) for jets file.");
330 return false;
331 }
332
333 // If there is not Trigger tower to correct with, then return false
334 const auto & GttVec = it_seed_map->second;
335 if (! GttVec.empty()) return isLM(GttVec.front());
336 return false;
337}

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ ReadfromFile()

StatusCode LVL1::jFEXForwardJetsAlgo::ReadfromFile ( const std::string & fileName,
std::unordered_map< unsigned int, std::vector< unsigned int > > & fillingMap ) const
private

Definition at line 436 of file jFEXForwardJetsAlgo.cxx.

436 {
437
438 std::string myline;
439
440 //opening file with ifstream
441 std::ifstream myfile(fileName);
442
443 if ( !myfile.is_open() ){
444 ATH_MSG_ERROR("Could not open file:" << fileName);
445 return StatusCode::FAILURE;
446 }
447
448 //loading the mapping information
449 while ( std::getline (myfile, myline) ) {
450
451 //removing the header of the file (it is just information!)
452 if(myline[0] == '#') continue;
453
454 //Splitting myline in different substrings
455 std::stringstream oneLine(myline);
456
457 //reading elements
458 std::vector<unsigned int> elements;
459 std::string element;
460 while(std::getline(oneLine, element, ' '))
461 {
462 elements.push_back(std::stoi(element));
463 }
464
465 // We should have at least two elements! Central TT and (at least) itself
466 if(elements.size() < 1){
467 ATH_MSG_ERROR("Unexpected number of elemennts (<1 expected) in file: "<< fileName);
468 return StatusCode::FAILURE;
469 }
470
471 //Central TiggerTower
472 unsigned int TTID = elements.at(0);
473
474 // rest of TTs that need to be checked
475 elements.erase(elements.begin());
476
477 fillingMap[TTID] = std::move(elements);
478
479 }
480 myfile.close();
481
482 return StatusCode::SUCCESS;
483}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ reset()

StatusCode LVL1::jFEXForwardJetsAlgo::reset ( )
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 64 of file jFEXForwardJetsAlgo.cxx.

64 {
65 return StatusCode::SUCCESS;
66}

◆ safetyTest()

StatusCode LVL1::jFEXForwardJetsAlgo::safetyTest ( )
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 53 of file jFEXForwardJetsAlgo.cxx.

53 {
54 m_jTowerContainer = SG::ReadHandle<jTowerContainer>(m_jFEXForwardJetsAlgo_jTowerContainerKey);
55 if(! m_jTowerContainer.isValid()) {
56 ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jFEXForwardJetsAlgo_jTowerContainerKey.key());
57
58 return StatusCode::FAILURE;
59 }
60
61 return StatusCode::SUCCESS;
62}

◆ setFPGAEnergy()

void LVL1::jFEXForwardJetsAlgo::setFPGAEnergy ( std::unordered_map< int, std::vector< int > > et_map)
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 422 of file jFEXForwardJetsAlgo.cxx.

422 {
423 m_map_Etvalues=std::move(et_map);
424}

◆ setup()

void LVL1::jFEXForwardJetsAlgo::setup ( int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width],
int jfex )
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 68 of file jFEXForwardJetsAlgo.cxx.

68 {
69 std::copy(&inputTable[0][0], &inputTable[0][0] + (FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width), &m_jFEXalgoTowerID[0][0]);
70 m_jfex=jfex;
71}
static constexpr int jFEX_wide_algoSpace_width
static constexpr int jFEX_algoSpace_height

◆ SumEtSeed()

int LVL1::jFEXForwardJetsAlgo::SumEtSeed ( unsigned int TTID) const
overridevirtual

Implements LVL1::IjFEXForwardJetsAlgo.

Definition at line 254 of file jFEXForwardJetsAlgo.cxx.

254 {
255
256 // Exists the jTower in the mapping?
257 auto it_seed_map = m_SeedRingMap.find(TTID);
258 if(it_seed_map == m_SeedRingMap.end()) {
259 ATH_MSG_ERROR("Could not find TT" << TTID << " in Jet seed file.");
260 return 0;
261 }
262 int summedEt = 0;
263 for(const auto& seedTT : it_seed_map->second){
264 //getEt can return -999 as an error value
265 const int thisEt = getEt(seedTT);
266 if (thisEt != -999){
267 summedEt += getEt(seedTT);
268 }
269 }
270
271 return summedEt;
272}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_1stRingMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_1stRingMap
private

Definition at line 70 of file jFEXForwardJetsAlgo.h.

◆ m_1stRingStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_1stRingStr {this, "Energy1stRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_1stRing.dat" , "Contains Trigger tower in 1st Energy ring"}
private

Definition at line 62 of file jFEXForwardJetsAlgo.h.

62{this, "Energy1stRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_1stRing.dat" , "Contains Trigger tower in 1st Energy ring"};

◆ m_2ndRingMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_2ndRingMap
private

Definition at line 71 of file jFEXForwardJetsAlgo.h.

◆ m_2ndRingStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_2ndRingStr {this, "Energy2ndRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_2ndRing.dat" , "Contains Trigger tower in 2nd energy ring"}
private

Definition at line 63 of file jFEXForwardJetsAlgo.h.

63{this, "Energy2ndRingMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_2ndRing.dat" , "Contains Trigger tower in 2nd energy ring"};

◆ m_Corr2Map

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_Corr2Map
private

Definition at line 73 of file jFEXForwardJetsAlgo.h.

◆ m_Corr2Str

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_Corr2Str {this, "Corr2Map" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr2.dat" , "Contains Trigger tower to correct displacement (greater or equal than)"}
private

Definition at line 65 of file jFEXForwardJetsAlgo.h.

65{this, "Corr2Map" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr2.dat" , "Contains Trigger tower to correct displacement (greater or equal than)"};

◆ m_CorrMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_CorrMap
private

Definition at line 72 of file jFEXForwardJetsAlgo.h.

◆ m_CorrStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_CorrStr {this, "CorrMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr.dat" , "Contains Trigger tower to correct displacement (greater than)"}
private

Definition at line 64 of file jFEXForwardJetsAlgo.h.

64{this, "CorrMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_corr.dat" , "Contains Trigger tower to correct displacement (greater than)"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_jfex

int LVL1::jFEXForwardJetsAlgo::m_jfex
private

Definition at line 54 of file jFEXForwardJetsAlgo.h.

◆ m_jFEXalgoTowerID

int LVL1::jFEXForwardJetsAlgo::m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
private

Definition at line 50 of file jFEXForwardJetsAlgo.h.

◆ m_jFEXForwardJetsAlgo_jTowerContainerKey

SG::ReadHandleKey<LVL1::jTowerContainer> LVL1::jFEXForwardJetsAlgo::m_jFEXForwardJetsAlgo_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"}
private

Definition at line 48 of file jFEXForwardJetsAlgo.h.

48{this, "MyjTowers", "jTowerContainer", "Input container for jTowers"};

◆ m_jTowerContainer

SG::ReadHandle<jTowerContainer> LVL1::jFEXForwardJetsAlgo::m_jTowerContainer
private

Definition at line 49 of file jFEXForwardJetsAlgo.h.

◆ m_lowerEM_eta

int LVL1::jFEXForwardJetsAlgo::m_lowerEM_eta
private

Definition at line 52 of file jFEXForwardJetsAlgo.h.

◆ m_map_Etvalues

std::unordered_map<int,std::vector<int> > LVL1::jFEXForwardJetsAlgo::m_map_Etvalues
private

Definition at line 51 of file jFEXForwardJetsAlgo.h.

◆ m_SearchGeMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_SearchGeMap
private

Definition at line 75 of file jFEXForwardJetsAlgo.h.

◆ m_SearchGeStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_SearchGeStr {this, "SearchGeMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGe.dat", "Contains Trigger tower to find local max (greater or equal than)"}
private

Definition at line 67 of file jFEXForwardJetsAlgo.h.

67{this, "SearchGeMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGe.dat", "Contains Trigger tower to find local max (greater or equal than)"};

◆ m_SearchGMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_SearchGMap
private

Definition at line 74 of file jFEXForwardJetsAlgo.h.

◆ m_SearchGStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_SearchGStr {this, "SearchGMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchG.dat" , "Contains Trigger tower to find local max (greater than)"}
private

Definition at line 66 of file jFEXForwardJetsAlgo.h.

66{this, "SearchGMap" , "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchG.dat" , "Contains Trigger tower to find local max (greater than)"};

◆ m_SeedRingMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardJetsAlgo::m_SeedRingMap
private

Definition at line 69 of file jFEXForwardJetsAlgo.h.

◆ m_SeedRingStr

Gaudi::Property<std::string> LVL1::jFEXForwardJetsAlgo::m_SeedRingStr {this, "SeedRingMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_seed.dat" , "Contains Trigger tower in seed"}
private

Definition at line 61 of file jFEXForwardJetsAlgo.h.

61{this, "SeedRingMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_seed.dat" , "Contains Trigger tower in seed"};

◆ m_storeEnergyRingTTIDs

bool LVL1::jFEXForwardJetsAlgo::m_storeEnergyRingTTIDs = true
private

Definition at line 58 of file jFEXForwardJetsAlgo.h.

◆ m_upperEM_eta

int LVL1::jFEXForwardJetsAlgo::m_upperEM_eta
private

Definition at line 53 of file jFEXForwardJetsAlgo.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: