ATLAS Offline Software
Loading...
Searching...
No Matches
RingerReFex Class Reference

#include <RingerReFex.h>

Inheritance diagram for RingerReFex:
Collaboration diagram for RingerReFex:

Classes

class  RingSet

Public Member Functions

 RingerReFex (const std::string &type, const std::string &name, const IInterface *parent)
 =================================================================================
virtual ~RingerReFex ()
virtual StatusCode initialize () override
 =================================================================================
virtual StatusCode execute (xAOD::TrigEMCluster &emCluster, const IRoiDescriptor &roi, const CaloDetDescrElement *&, const EventContext &context) const override
 =================================================================================
StatusCode prepareRinger (std::vector< RingerReFex::RingSet > &vec_rs, const xAOD::TrigEMCluster &emCluster, const IRoiDescriptor &roi, const EventContext &context) const
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

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.

Protected Attributes

const CaloIdManagerm_larMgr = nullptr
 Calorimeter Id Manager for calorimeter part determination (Barrel versus EndCap)
Gaudi::Property< bool > m_saveCells
Gaudi::Property< float > m_cellkeepthr
ToolHandle< IT2GeometryToolm_geometryTool
ServiceHandle< ITrigCaloDataAccessSvcm_dataSvc

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

bool configurationInvalid ()
 =================================================================================
bool maxCell (const CaloCell *cell, double &energy, const double eta_ref, const double phi_ref) const
void printRings (std::vector< RingSet > &, const xAOD::TrigEMCluster &) const
 =================================================================================
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< GenericMonitoringToolm_monTool { this, "MonTool", "", "Monitoring tool"}
SG::WriteHandleKey< xAOD::TrigRingerRingsContainerm_ringerContainerKey {this, "RingerKey", "HLT_FastCaloRinger", "TrigRingerRings container key"}
SG::ReadHandleKey< xAOD::TrigEMClusterContainerm_clusterContainerKey {this, "ClustersName", "HLT_FastCaloEMClusters", "TrigEMCluster container key"}
SG::ReadCondHandleKey< CaloNoisem_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
Gaudi::Property< double > m_etaSearchWindowSize {this, "EtaSearchWindowSize", 0.1, ""}
Gaudi::Property< double > m_phiSearchWindowSize {this, "PhiSearchWindowSize", 0.1, ""}
Gaudi::Property< std::vector< float > > m_deltaEta {this, "DeltaEta" , {} , "Eta step for each layer" }
Gaudi::Property< std::vector< float > > m_deltaPhi {this, "DeltaPhi" , {} , "Phi step for each layer" }
Gaudi::Property< std::vector< unsigned int > > m_nRings {this, "NRings" , {} , "Number of rings for each layer" }
Gaudi::Property< std::vector< float > > m_etaBins {this, "EtaBins" , {} , "Eta bins range cover by the reconstruction."}
Gaudi::Property< std::vector< std::vector< int > > > m_detectors {this, "Detectors" , {} , "" }
Gaudi::Property< std::vector< std::vector< int > > > m_samplings {this, "Samplings" , {} , "" }
Gaudi::Property< std::vector< std::vector< int > > > m_samples {this, "Samples" , {} , "samples per layer" }
Gaudi::Property< bool > m_useTile {this, "UseTile" , true , "Use tile cells" }
Gaudi::Property< bool > m_dumpCells {this, "DumpCells" , false , "Dump Ringer Cells Information" }
Gaudi::Property< bool > m_doNoiseThrRings {this, "DoNoiseThrRings" , false , "Building rings with noise threshold" }
Gaudi::Property< double > m_noiseFactor {this, "NoiseFactor" , 2.0, "Building rings above a factor sigma noise" }
Gaudi::Property< bool > m_globalCenter {this, "GlobalCenter", false, "Use cluster position as center" }
Gaudi::Property< std::vector< bool > > m_doQuarter {this, "DoQuarter", {} , "Do Quarter Rings" }
Gaudi::Property< std::vector< bool > > m_doEtaAxesDivision {this, "DoEtaAxesDivision", {} , "Do Eta axes division" }
Gaudi::Property< std::vector< bool > > m_doPhiAxesDivision {this, "DoPhiAxesDivision",{}, "Do Phi axes division" }
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 24 of file RingerReFex.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

◆ RingerReFex()

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

=================================================================================

Definition at line 38 of file RingerReFex.cxx.

39 : IReAlgToolCalo(type, name, parent)
40{}
IReAlgToolCalo(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.

◆ ~RingerReFex()

virtual RingerReFex::~RingerReFex ( )
inlinevirtual

Definition at line 62 of file RingerReFex.h.

62{ };

Member Function Documentation

◆ configurationInvalid()

bool RingerReFex::configurationInvalid ( )
private

=================================================================================

Definition at line 44 of file RingerReFex.cxx.

44 {
45
46 if((m_etaBins.size() < 2) || (m_etaBins.size()%2 != 0)){
47 ATH_MSG_FATAL( "Wrong eta range configuration. Size must be equal or more than two." );
48 return true;
49 }
50 return false;
51}
#define ATH_MSG_FATAL(x)
Gaudi::Property< std::vector< float > > m_etaBins
Definition RingerReFex.h:99

◆ 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.

◆ 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.

◆ execute()

StatusCode RingerReFex::execute ( xAOD::TrigEMCluster & emCluster,
const IRoiDescriptor & roi,
const CaloDetDescrElement *& ,
const EventContext & context ) const
overridevirtual

=================================================================================

Implements IReAlgToolCalo.

Definition at line 209 of file RingerReFex.cxx.

213{
214
215
216 auto total_time = Monitored::Timer("TIME_total");
217 auto load_cells_time = Monitored::Timer("TIME_load_cells");
218 auto mon = Monitored::Group(m_monTool, total_time, load_cells_time);
219
220 total_time.start();
221
222 SG::WriteHandle<xAOD::TrigRingerRingsContainer> ringsCollection =
223 SG::WriteHandle<xAOD::TrigRingerRingsContainer>( m_ringerContainerKey, context );
224
225 ATH_CHECK( ringsCollection.record( std::make_unique<xAOD::TrigRingerRingsContainer>(),
226 std::make_unique<xAOD::TrigRingerRingsAuxContainer>() ) );
227
228
229
230 // Check if the cluster is in the Eta region
231 bool accept=false;
232 for(unsigned i=0; i<m_etaBins.size();i+=2){
233 if((std::abs(emCluster.eta()) > m_etaBins[i]) && (std::abs(emCluster.eta()) <= m_etaBins[i+1])) accept=true;
234 }
235
236
237 if(!accept){
238 auto dummyRinger = new xAOD::TrigRingerRings();
239 ringsCollection->push_back( dummyRinger );
240 return StatusCode::SUCCESS;
241 }
242
243
244 std::vector<RingerReFex::RingSet> vec_rs;
245 load_cells_time.start();
246 ATH_CHECK(prepareRinger(vec_rs,emCluster,roi,context));
247 load_cells_time.stop();
248
249 std::vector<float> ref_rings;
250 for (std::vector<RingerReFex::RingSet>::iterator it=vec_rs.begin(); it!=vec_rs.end(); ++it)
251 {
252 auto rings = it->rings();
253 ref_rings.insert(ref_rings.end(), rings.begin(), rings.end());
254 }
255
256 auto ptrigRingerRings= new xAOD::TrigRingerRings();
257 ringsCollection->push_back( ptrigRingerRings );
258 ptrigRingerRings->setRings(ref_rings);
259 //ptrigRingerRings->auxdecor<int>("type") = 1;
260 if (m_dumpCells){
261 std::vector<float> cells_eta;
262 std::vector<float> cells_et;
263 std::vector<float> cells_phi;
264 std::vector<int> cells_sampling;
265 std::vector<int> cells_size;
266 std::vector<double> rings_sum;
267 std::vector<int> cells_id;
268 std::vector<float> cells_gain;
269
270 for( auto& rs : vec_rs )
271 rs.fill_cells_info(cells_eta, cells_phi, cells_et, cells_sampling, cells_size, rings_sum, cells_id, cells_gain);
272
273 static const SG::Decorator< std::vector<float> > cells_etaDec("cells_eta");
274 static const SG::Decorator< std::vector<float> > cells_etDec("cells_et");
275 static const SG::Decorator< std::vector<float> > cells_phiDec("cells_phi");
276 static const SG::Decorator< std::vector<int> > cells_samplingDec("cells_sampling");
277 static const SG::Decorator< std::vector<int> > cells_sizeDec("cells_size");
278 static const SG::Decorator< std::vector<int> > cells_idDec("cells_id");
279 static const SG::Decorator< std::vector<float> > cells_gainDec("cells_gain");
280 static const SG::Decorator< std::vector<double> > asym_rings_sumDec("asym_rings_sum");
281 static const SG::Decorator< std::vector<double> > rings_sumDec("rings_sum");
282 cells_etaDec(*ptrigRingerRings) = std::move(cells_eta);
283 cells_etDec(*ptrigRingerRings) = std::move(cells_et);
284 cells_phiDec(*ptrigRingerRings) = std::move(cells_phi);
285 cells_samplingDec(*ptrigRingerRings) = std::move(cells_sampling);
286 cells_sizeDec(*ptrigRingerRings) = std::move(cells_size);
287 cells_idDec(*ptrigRingerRings) = std::move(cells_id);
288 cells_gainDec(*ptrigRingerRings) = std::move(cells_gain);
289
290 if (m_doQuarter[0]) asym_rings_sumDec(*ptrigRingerRings) = std::move(rings_sum);
291 else rings_sumDec(*ptrigRingerRings) = std::move(rings_sum);
292 }
293
294 auto clusLink = ElementLink<xAOD::TrigEMClusterContainer>(m_clusterContainerKey.key(),0,context);
295 ptrigRingerRings->setEmClusterLink( clusLink );
296
297
298 if(msgLvl(MSG::DEBUG))
299 printRings(vec_rs, emCluster);
300
301 total_time.stop();
302 return StatusCode::SUCCESS;
303}
#define ATH_CHECK
Evaluate an expression and check for errors.
static Double_t rs
bool msgLvl(const MSG::Level lvl) const
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_clusterContainerKey
Definition RingerReFex.h:91
Gaudi::Property< std::vector< bool > > m_doQuarter
Gaudi::Property< bool > m_dumpCells
ToolHandle< GenericMonitoringTool > m_monTool
Definition RingerReFex.h:89
StatusCode prepareRinger(std::vector< RingerReFex::RingSet > &vec_rs, const xAOD::TrigEMCluster &emCluster, const IRoiDescriptor &roi, const EventContext &context) const
SG::WriteHandleKey< xAOD::TrigRingerRingsContainer > m_ringerContainerKey
Definition RingerReFex.h:90
void printRings(std::vector< RingSet > &, const xAOD::TrigEMCluster &) const
=================================================================================
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
float eta() const
get Eta (calibrated)
StatusCode accept(const xAOD::Muon *mu)
TrigRingerRings_v2 TrigRingerRings
Define the latest version of the TrigRingerRings class.

◆ 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

◆ initialize()

StatusCode RingerReFex::initialize ( )
overridevirtual

=================================================================================

Reimplemented from IReAlgToolCalo.

Definition at line 55 of file RingerReFex.cxx.

56{
57
58 if (IReAlgToolCalo::initialize().isFailure()) {
59 ATH_MSG_FATAL( "Could not initialize base tool IReAlgToolCalo." );
60 return StatusCode::FAILURE;
61 }
62
64 return StatusCode::FAILURE;
65 }
66
67 ATH_CHECK( m_ringerContainerKey.initialize() );
68 ATH_CHECK( m_clusterContainerKey.initialize() );
69 ATH_CHECK( m_noiseCDOKey.initialize() );
70
71 if (!m_monTool.empty()){
72 ATH_MSG_DEBUG("Retrieving monTool");
73 CHECK(m_monTool.retrieve());
74 }else{
75 ATH_MSG_INFO("No monTool configured. NO MONITORING");
76 }
77
78
79 ATH_MSG_DEBUG( "Ringer algorithm initialization completed successfully." );
80 ATH_MSG_DEBUG( "User parameters are: " );
81 ATH_MSG_DEBUG( "Using Global Center : " << m_globalCenter );
82 ATH_MSG_DEBUG( "Using Tile cells : " << m_useTile );
83 ATH_MSG_DEBUG( "Search Window in Eta : " << m_etaSearchWindowSize );
84 ATH_MSG_DEBUG( "Search Window in Phi : " << m_phiSearchWindowSize );
85 ATH_MSG_DEBUG( "Dumping cells info : " << m_dumpCells );
86 ATH_MSG_DEBUG( "Building Rings with noise factor : " << m_doNoiseThrRings );
87 ATH_MSG_DEBUG( "Building Rings with Noise Factor Constant: " << m_noiseFactor );
88
89 return StatusCode::SUCCESS;
90}
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
virtual StatusCode initialize() override
Gaudi::Property< double > m_phiSearchWindowSize
Definition RingerReFex.h:95
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Definition RingerReFex.h:92
bool configurationInvalid()
=================================================================================
Gaudi::Property< bool > m_useTile
Gaudi::Property< bool > m_globalCenter
Gaudi::Property< double > m_noiseFactor
Gaudi::Property< bool > m_doNoiseThrRings
Gaudi::Property< double > m_etaSearchWindowSize
Definition RingerReFex.h:94

◆ 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.

◆ maxCell()

bool RingerReFex::maxCell ( const CaloCell * cell,
double & energy,
const double eta_ref,
const double phi_ref ) const
inlineprivate

Definition at line 323 of file RingerReFex.cxx.

324{
325 const double etamin = eta_ref - (0.5 * m_etaSearchWindowSize);
326 const double etamax = eta_ref + (0.5 * m_etaSearchWindowSize);
327 const double phimin = phi_ref - (0.5 * m_phiSearchWindowSize);
328 const double phimax = phi_ref + (0.5 * m_phiSearchWindowSize);
329
330 //are we, possibly at the wrap-around region for phi?
331 bool wrap = Ringer::check_wrap_around(phi_ref, false);
332 bool reverse_wrap = Ringer::check_wrap_around(phi_ref, true);
333
334 if(!cell) return false;
335 double this_eta = cell->eta();
336 double this_phi = cell->phi();
337 if (this_eta > etamin && this_eta < etamax){
338 double phi_use = this_phi; //use this value for phi (wrap protection)
339 if (wrap) phi_use = Ringer::fix_wrap_around(phi_use, false);
340 if (reverse_wrap) phi_use = Ringer::fix_wrap_around(phi_use, true);
341 if (phi_use > phimin && phi_use < phimax){
342 if (cell->energy() > energy) {
343 energy = cell->energy();
344 return true;
345 }
346 }
347 }
348 return false;
349}
bool check_wrap_around(const double phi_center, const bool reverse_wrap)
Helper function to identify wrap around cases.
Definition PhiComps.h:17
double fix_wrap_around(const double phi_value, const bool reverse_wrap)
Helper function to fix wrap around cases.
Definition PhiComps.h:26

◆ 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.

◆ prepareRinger()

StatusCode RingerReFex::prepareRinger ( std::vector< RingerReFex::RingSet > & vec_rs,
const xAOD::TrigEMCluster & emCluster,
const IRoiDescriptor & roi,
const EventContext & context ) const

Definition at line 94 of file RingerReFex.cxx.

97 {
98
99 SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey,context};
100 const CaloNoise* noiseCDO=*noiseHdl;
101 for (unsigned rs = 0; rs < m_nRings.size(); ++rs) {
102
103 auto obj = RingerReFex::RingSet( m_nRings[rs],
104 m_deltaEta[rs],
105 m_deltaPhi[rs],
108 m_samples[rs],
112 vec_rs.push_back( obj );
113 }
114
115 std::vector<const CaloCell*> vec_tile_cells;
116 // Get all cells for the Tile calorimeter
117 std::vector<const TileCell*> sel;
118 std::vector<const TileCell*>::const_iterator it, itBegin, itEnd;
119
120 if( m_dataSvc->loadCollections( context, roi, sel ).isFailure() ){
121 ATH_MSG_ERROR( "Error retrieving TileCalorimeter cells!" );
122 return StatusCode::FAILURE;
123 }
124
125 itBegin = sel.begin();
126 itEnd = sel.end();
127 for(it = itBegin; it != itEnd; ++it)
128 {
129 if(!*it) continue;
130 vec_tile_cells.push_back(static_cast<const CaloCell *>(*it));
131 }
132
133 // This is the main loop
134 for( auto& rs : vec_rs ){
135
136 const CaloCell* hotCell = nullptr;
137 double ehot=-999e30;
138
139 for ( auto det : rs.detectors() ){
140
141 DETID det_id= static_cast<DETID>(det.first);
142 int sampling = det.second;
143
144 if( det_id == TILE ){
145
146 for (std::vector<const CaloCell *>::const_iterator it = vec_tile_cells.begin(); it != vec_tile_cells.end(); ++it)
147 {
148 if( !rs.isValid(*it) ) continue;
149
150 rs.push_back(*it);
151 if( !m_globalCenter ){
152 if( maxCell( *it, ehot, emCluster.eta(), emCluster.phi() ) )
153 hotCell=*it;
154 }
155 }
156
157
158 }else{// TTEM, TTHEC, FCALEM and FCALHAD
159
160 // Load all cells
161 LArTT_Selector<LArCellCont> sel;
163 if( m_dataSvc->loadCollections( context, roi, det_id, sampling, sel ).isFailure() )
164 {
165 ATH_MSG_ERROR( "Failure while trying to retrieve cell information for the "<< det_id <<" calorimeter." );
166 return StatusCode::FAILURE;
167 }
168
169 itBegin = sel.begin();
170 itEnd = sel.end();
171
172 // Loop over all LAr cells
173 // Append all valid cells and search the hottest cell
174 for(it = itBegin; it != itEnd; ++it)
175 {
176 if(!*it) continue;
177 // LAr object to CaloCell
178 const CaloCell *it_tmp = static_cast<const CaloCell*>(*it);
179
180 // Check if the current cells is allow into this rs
181 if( !rs.isValid( it_tmp ) ) continue;
182 rs.push_back(it_tmp);
183
184 if( !m_globalCenter ){
185 if( maxCell( *it, ehot, emCluster.eta(), emCluster.phi() ) )
186 hotCell=*it;
187 }
188 }
189
190 }// Is TILE?
191
192 }// Loop over all det configs
193
194
195 // Use all Tile cells in cache
196 if (m_globalCenter || !hotCell) {
197 rs.buildRings( emCluster.eta(), emCluster.phi(),noiseCDO,m_noiseFactor,m_doNoiseThrRings);
198 }else {
199 rs.buildRings( hotCell->eta(), hotCell->phi(),noiseCDO,m_noiseFactor,m_doNoiseThrRings);
200 }
201
202 }// Loop over all ringer sets
203 return StatusCode::SUCCESS;
204
205}
#define ATH_MSG_ERROR(x)
DETID
An enum to define subdetector names.
Definition RegSelEnums.h:23
@ TILE
Definition RegSelEnums.h:30
#define maxCell
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition CaloCell.h:375
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition CaloCell.h:382
ServiceHandle< ITrigCaloDataAccessSvc > m_dataSvc
friend class const_iterator
Gaudi::Property< std::vector< float > > m_deltaEta
Definition RingerReFex.h:96
Gaudi::Property< std::vector< float > > m_deltaPhi
Definition RingerReFex.h:97
Gaudi::Property< std::vector< bool > > m_doEtaAxesDivision
Gaudi::Property< std::vector< std::vector< int > > > m_samplings
Gaudi::Property< std::vector< bool > > m_doPhiAxesDivision
Gaudi::Property< std::vector< std::vector< int > > > m_detectors
Gaudi::Property< std::vector< unsigned int > > m_nRings
Definition RingerReFex.h:98
Gaudi::Property< std::vector< std::vector< int > > > m_samples
float phi() const
get Phi (calibrated)

◆ printRings()

void RingerReFex::printRings ( std::vector< RingSet > & vec_rs,
const xAOD::TrigEMCluster & cl ) const
private

=================================================================================

Definition at line 355 of file RingerReFex.cxx.

356{
357 ATH_MSG_INFO("--------------- Cluster Information (2) ----------------");
358
359 //auto cl = ring->emCluster();
360 ATH_MSG_INFO("et = "<< cl.et() << " eta = " << cl.eta() << " roiword = " << cl.RoIword());
361
362
363 for(unsigned rs=0; rs<vec_rs.size(); ++rs){
364 ATH_MSG_INFO("RingSet number is: " << rs);
365 ATH_MSG_INFO("search eta window: " << m_etaSearchWindowSize << " search phi window: " << m_phiSearchWindowSize);
366 ATH_MSG_INFO("deta: " << m_deltaEta[rs] << " dphi: " << m_deltaPhi[rs]);
367 ATH_MSG_INFO("Pattern has size equal than: " << vec_rs.at(rs).rings().size());
368
369 double tot=0;
370 for(unsigned i=0;i<vec_rs.at(rs).rings().size();++i){
371 tot+=vec_rs.at(rs).rings()[i];
372 ATH_MSG_INFO(" Ring " << i << " energy: " << vec_rs.at(rs).rings()[i] << " MeVs.");
373 }
374 ATH_MSG_INFO( "RingSet = " << rs << " Total energy = " << tot );
375 }// Loop over ringSets
376 ATH_MSG_INFO("---------------- End of information -----------------");
377
378}
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]

◆ 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 }

◆ 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_cellkeepthr

Gaudi::Property<float> IReAlgToolCalo::m_cellkeepthr
protectedinherited
Initial value:
{this, "ThresholdKeepCells", 1e5,
"Threshold to keep cells incontainer"}

Definition at line 63 of file IReAlgToolCalo.h.

63 {this, "ThresholdKeepCells", 1e5,
64 "Threshold to keep cells incontainer"};

◆ m_clusterContainerKey

SG::ReadHandleKey<xAOD::TrigEMClusterContainer> RingerReFex::m_clusterContainerKey {this, "ClustersName", "HLT_FastCaloEMClusters", "TrigEMCluster container key"}
private

Definition at line 91 of file RingerReFex.h.

91{this, "ClustersName", "HLT_FastCaloEMClusters", "TrigEMCluster container key"};

◆ m_dataSvc

ServiceHandle<ITrigCaloDataAccessSvc> IReAlgToolCalo::m_dataSvc
protectedinherited
Initial value:
{this, "trigDataAccessMT",
"TrigCaloDataAccessSvc/TrigCaloDataAccessSvc",
"Data Access for LVL2 Calo Algorithms in MT"}

Definition at line 70 of file IReAlgToolCalo.h.

70 {this, "trigDataAccessMT",
71 "TrigCaloDataAccessSvc/TrigCaloDataAccessSvc",
72 "Data Access for LVL2 Calo Algorithms in MT"};

◆ m_deltaEta

Gaudi::Property<std::vector<float> > RingerReFex::m_deltaEta {this, "DeltaEta" , {} , "Eta step for each layer" }
private

Definition at line 96 of file RingerReFex.h.

96{this, "DeltaEta" , {} , "Eta step for each layer" };

◆ m_deltaPhi

Gaudi::Property<std::vector<float> > RingerReFex::m_deltaPhi {this, "DeltaPhi" , {} , "Phi step for each layer" }
private

Definition at line 97 of file RingerReFex.h.

97{this, "DeltaPhi" , {} , "Phi step for each layer" };

◆ m_detectors

Gaudi::Property<std::vector<std::vector<int> > > RingerReFex::m_detectors {this, "Detectors" , {} , "" }
private

Definition at line 100 of file RingerReFex.h.

100{this, "Detectors" , {} , "" };

◆ 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_doEtaAxesDivision

Gaudi::Property<std::vector<bool> > RingerReFex::m_doEtaAxesDivision {this, "DoEtaAxesDivision", {} , "Do Eta axes division" }
private

Definition at line 110 of file RingerReFex.h.

110{this, "DoEtaAxesDivision", {} , "Do Eta axes division" };

◆ m_doNoiseThrRings

Gaudi::Property<bool> RingerReFex::m_doNoiseThrRings {this, "DoNoiseThrRings" , false , "Building rings with noise threshold" }
private

Definition at line 106 of file RingerReFex.h.

106{this, "DoNoiseThrRings" , false , "Building rings with noise threshold" };

◆ m_doPhiAxesDivision

Gaudi::Property<std::vector<bool> > RingerReFex::m_doPhiAxesDivision {this, "DoPhiAxesDivision",{}, "Do Phi axes division" }
private

Definition at line 111 of file RingerReFex.h.

111{this, "DoPhiAxesDivision",{}, "Do Phi axes division" };

◆ m_doQuarter

Gaudi::Property<std::vector<bool> > RingerReFex::m_doQuarter {this, "DoQuarter", {} , "Do Quarter Rings" }
private

Definition at line 109 of file RingerReFex.h.

109{this, "DoQuarter", {} , "Do Quarter Rings" };

◆ m_dumpCells

Gaudi::Property<bool> RingerReFex::m_dumpCells {this, "DumpCells" , false , "Dump Ringer Cells Information" }
private

Definition at line 105 of file RingerReFex.h.

105{this, "DumpCells" , false , "Dump Ringer Cells Information" };

◆ m_etaBins

Gaudi::Property<std::vector<float> > RingerReFex::m_etaBins {this, "EtaBins" , {} , "Eta bins range cover by the reconstruction."}
private

Definition at line 99 of file RingerReFex.h.

99{this, "EtaBins" , {} , "Eta bins range cover by the reconstruction."};

◆ m_etaSearchWindowSize

Gaudi::Property<double> RingerReFex::m_etaSearchWindowSize {this, "EtaSearchWindowSize", 0.1, ""}
private

Definition at line 94 of file RingerReFex.h.

94{this, "EtaSearchWindowSize", 0.1, ""};

◆ 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_geometryTool

ToolHandle<IT2GeometryTool> IReAlgToolCalo::m_geometryTool
protectedinherited
Initial value:
{
this, "T2GeometryTool", "T2GeometryTool/T2GeometryTool",
"Tool to check that a cells are contained in a given cluster"}

Definition at line 66 of file IReAlgToolCalo.h.

66 {
67 this, "T2GeometryTool", "T2GeometryTool/T2GeometryTool",
68 "Tool to check that a cells are contained in a given cluster"};

◆ m_globalCenter

Gaudi::Property<bool> RingerReFex::m_globalCenter {this, "GlobalCenter", false, "Use cluster position as center" }
private

Definition at line 108 of file RingerReFex.h.

108{this, "GlobalCenter", false, "Use cluster position as center" };

◆ m_larMgr

const CaloIdManager* IReAlgToolCalo::m_larMgr = nullptr
protectedinherited

Calorimeter Id Manager for calorimeter part determination (Barrel versus EndCap)

Definition at line 57 of file IReAlgToolCalo.h.

◆ m_monTool

ToolHandle< GenericMonitoringTool > RingerReFex::m_monTool { this, "MonTool", "", "Monitoring tool"}
private

Definition at line 89 of file RingerReFex.h.

89{ this, "MonTool", "", "Monitoring tool"};

◆ m_noiseCDOKey

SG::ReadCondHandleKey<CaloNoise> RingerReFex::m_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
private

Definition at line 92 of file RingerReFex.h.

92{this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"};

◆ m_noiseFactor

Gaudi::Property<double> RingerReFex::m_noiseFactor {this, "NoiseFactor" , 2.0, "Building rings above a factor sigma noise" }
private

Definition at line 107 of file RingerReFex.h.

107{this, "NoiseFactor" , 2.0, "Building rings above a factor sigma noise" };

◆ m_nRings

Gaudi::Property<std::vector<unsigned int> > RingerReFex::m_nRings {this, "NRings" , {} , "Number of rings for each layer" }
private

Definition at line 98 of file RingerReFex.h.

98{this, "NRings" , {} , "Number of rings for each layer" };

◆ m_phiSearchWindowSize

Gaudi::Property<double> RingerReFex::m_phiSearchWindowSize {this, "PhiSearchWindowSize", 0.1, ""}
private

Definition at line 95 of file RingerReFex.h.

95{this, "PhiSearchWindowSize", 0.1, ""};

◆ m_ringerContainerKey

SG::WriteHandleKey<xAOD::TrigRingerRingsContainer> RingerReFex::m_ringerContainerKey {this, "RingerKey", "HLT_FastCaloRinger", "TrigRingerRings container key"}
private

Definition at line 90 of file RingerReFex.h.

90{this, "RingerKey", "HLT_FastCaloRinger", "TrigRingerRings container key"};

◆ m_samples

Gaudi::Property<std::vector<std::vector<int> > > RingerReFex::m_samples {this, "Samples" , {} , "samples per layer" }
private

Definition at line 102 of file RingerReFex.h.

102{this, "Samples" , {} , "samples per layer" };

◆ m_samplings

Gaudi::Property<std::vector<std::vector<int> > > RingerReFex::m_samplings {this, "Samplings" , {} , "" }
private

Definition at line 101 of file RingerReFex.h.

101{this, "Samplings" , {} , "" };

◆ m_saveCells

Gaudi::Property<bool> IReAlgToolCalo::m_saveCells
protectedinherited
Initial value:
{this, "SaveCellsInContainer", false,
"Enables saving of the RoI Calorimeter Cells in StoreGate"}

Definition at line 60 of file IReAlgToolCalo.h.

60 {this, "SaveCellsInContainer", false,
61 "Enables saving of the RoI Calorimeter Cells in StoreGate"};

◆ m_useTile

Gaudi::Property<bool> RingerReFex::m_useTile {this, "UseTile" , true , "Use tile cells" }
private

Definition at line 104 of file RingerReFex.h.

104{this, "UseTile" , true , "Use tile cells" };

◆ 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: