ATLAS Offline Software
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Ringer::BuildCaloRingsFctor< container_t > Class Template Reference

#include <CaloRingerReaderUtils.h>

Inheritance diagram for Ringer::BuildCaloRingsFctor< container_t >:
Collaboration diagram for Ringer::BuildCaloRingsFctor< container_t >:

Public Types

typedef container_t::base_value_type particle_t
 Particle type that the functor will decorate the CaloRingsLinks. More...
 
typedef SG::WriteDecorHandle< container_t, xAOD::CaloRingsLinksdecor_t
 CaloRings links decorator handle type. More...
 

Public Member Functions

 BuildCaloRingsFctor (const std::string &decoContName, ToolHandle< ICaloRingsBuilder > &builder, IMessageSvc *msgSvc, IDataHandleHolder *owningAlg)
 Main ctor, repass information for interface. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 
void operator() (const particle_t *part)
 Methods. More...
 
StatusCode initialize ()
 Initialize the decorator keys. More...
 
StatusCode prepareToLoopFor (std::size_t nParticles)
 Prepare to loop for nParticles. More...
 
void checkRelease ()
 Release the handles when finished looping. More...
 

Private Types

typedef BuildCaloRingsFctorBase base_t
 

Private Member Functions

void displayLoopingMessage () const
 Shows current looping status. More...
 
void checkRelease ()
 Release the handles when finished looping. More...
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

SG::WriteDecorHandleKey< container_t > m_decorKey
 Decorator key. More...
 
decor_tm_decor {nullptr}
 Write decorator handle. More...
 
ToolHandle< ICaloRingsBuilder > & m_builder
 Protected Properties. More...
 
size_t m_part_counter
 Hold number of particles already procesed for this event: More...
 
size_t m_part_size
 Hold number of particles to be processed: More...
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Static Private Attributes

static constexpr const char * m_particle_name = Ringer::GetParticleProp<particle_t>::name
 Holds particle name: More...
 
static constexpr bool m_particle_has_cluster = Ringer::GetParticleProp<particle_t>::hasCluster
 Holds if particle has cluster access: More...
 

Detailed Description

template<typename container_t>
class Ringer::BuildCaloRingsFctor< container_t >

Definition at line 107 of file CaloRingerReaderUtils.h.

Member Typedef Documentation

◆ base_t

template<typename container_t >
typedef BuildCaloRingsFctorBase Ringer::BuildCaloRingsFctor< container_t >::base_t
private

Definition at line 117 of file CaloRingerReaderUtils.h.

◆ decor_t

template<typename container_t >
typedef SG::WriteDecorHandle< container_t, xAOD::CaloRingsLinks > Ringer::BuildCaloRingsFctor< container_t >::decor_t

CaloRings links decorator handle type.

Definition at line 114 of file CaloRingerReaderUtils.h.

◆ particle_t

template<typename container_t >
typedef container_t::base_value_type Ringer::BuildCaloRingsFctor< container_t >::particle_t

Particle type that the functor will decorate the CaloRingsLinks.

Definition at line 111 of file CaloRingerReaderUtils.h.

Constructor & Destructor Documentation

◆ BuildCaloRingsFctor()

template<typename container_t >
Ringer::BuildCaloRingsFctor< container_t >::BuildCaloRingsFctor ( const std::string &  decoContName,
ToolHandle< ICaloRingsBuilder > &  builder,
IMessageSvc *  msgSvc,
IDataHandleHolder *  owningAlg 
)
inline

Main ctor, repass information for interface.

Definition at line 149 of file CaloRingerReaderUtils.h.

155  builder,
156  msgSvc,
157  owningAlg->name()),
158  m_decorKey( decoContName + "." + xAOD::caloRingsLinksDecorKey() )
159  { m_decorKey.setOwner(owningAlg);}

Member Function Documentation

◆ checkRelease() [1/2]

template<typename container_t >
void Ringer::BuildCaloRingsFctorBase::checkRelease
private

Release the handles when finished looping.

Definition at line 86 of file CaloRingerReaderUtils.cxx.

43  {
44  if ( m_part_counter == m_part_size ) {
45  delete m_crContH; m_crContH = nullptr;
46  delete m_rsContH; m_rsContH = nullptr;
47  }
48 }

◆ checkRelease() [2/2]

template<typename container_t >
void Ringer::BuildCaloRingsFctor< container_t >::checkRelease ( )

Release the handles when finished looping.

◆ displayLoopingMessage()

template<typename container_t >
void Ringer::BuildCaloRingsFctor< container_t >::displayLoopingMessage ( ) const
private

Shows current looping status.

◆ incrementCounter()

void Ringer::BuildCaloRingsFctorBase::incrementCounter ( )
inlineprotectedinherited

Increment particle looping counter.

Definition at line 81 of file CaloRingerReaderUtils.h.

81 { ++m_part_counter; }

◆ initialize()

template<typename container_t >
StatusCode Ringer::BuildCaloRingsFctor< container_t >::initialize ( )

Initialize the decorator keys.

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ operator()()

template<typename container_t >
void Ringer::BuildCaloRingsFctor< container_t >::operator() ( const particle_t part)

Methods.

Looping functor method when it has access to cluster.

◆ prepareToLoopFor()

template<typename container_t >
StatusCode Ringer::BuildCaloRingsFctor< container_t >::prepareToLoopFor ( std::size_t  nParticles)

Prepare to loop for nParticles.

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_builder

template<typename container_t >
ToolHandle<ICaloRingsBuilder>& Ringer::BuildCaloRingsFctorBase::m_builder
private

Protected Properties.

CaloRings which will be used

Definition at line 64 of file CaloRingerReaderUtils.h.

◆ m_crContH

SG::WriteHandle<xAOD::CaloRingsContainer>* Ringer::BuildCaloRingsFctorBase::m_crContH
privateinherited

Private Properties.

Keep CaloRingsContainer handle in scope until finished looping

Definition at line 95 of file CaloRingerReaderUtils.h.

◆ m_decor

template<typename container_t >
decor_t* Ringer::BuildCaloRingsFctor< container_t >::m_decor {nullptr}
private

Write decorator handle.

Definition at line 143 of file CaloRingerReaderUtils.h.

◆ m_decorKey

template<typename container_t >
SG::WriteDecorHandleKey< container_t > Ringer::BuildCaloRingsFctor< container_t >::m_decorKey
private

Decorator key.

Definition at line 138 of file CaloRingerReaderUtils.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_part_counter

template<typename container_t >
size_t Ringer::BuildCaloRingsFctorBase::m_part_counter
private

Hold number of particles already procesed for this event:

Definition at line 66 of file CaloRingerReaderUtils.h.

◆ m_part_size

template<typename container_t >
size_t Ringer::BuildCaloRingsFctorBase::m_part_size
private

Hold number of particles to be processed:

Definition at line 68 of file CaloRingerReaderUtils.h.

◆ m_particle_has_cluster

template<typename container_t >
constexpr bool Ringer::BuildCaloRingsFctor< container_t >::m_particle_has_cluster = Ringer::GetParticleProp<particle_t>::hasCluster
staticconstexprprivate

Holds if particle has cluster access:

Definition at line 128 of file CaloRingerReaderUtils.h.

◆ m_particle_name

template<typename container_t >
constexpr const char* Ringer::BuildCaloRingsFctor< container_t >::m_particle_name = Ringer::GetParticleProp<particle_t>::name
staticconstexprprivate

Holds particle name:

Definition at line 126 of file CaloRingerReaderUtils.h.

◆ m_rsContH

SG::WriteHandle<xAOD::RingSetContainer>* Ringer::BuildCaloRingsFctorBase::m_rsContH
privateinherited

Keep RingSetContainer handle in scope until finished looping.

Definition at line 97 of file CaloRingerReaderUtils.h.


The documentation for this class was generated from the following file:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
Ringer::BuildCaloRingsFctor::m_decorKey
SG::WriteDecorHandleKey< container_t > m_decorKey
Decorator key.
Definition: CaloRingerReaderUtils.h:138
Ringer::BuildCaloRingsFctorBase::m_crContH
SG::WriteHandle< xAOD::CaloRingsContainer > * m_crContH
Private Properties.
Definition: CaloRingerReaderUtils.h:95
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
xAOD::caloRingsLinksDecorKey
std::string caloRingsLinksDecorKey()
Definition: getCaloRingsDecorator.h:17
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
Ringer::BuildCaloRingsFctorBase::BuildCaloRingsFctorBase
BuildCaloRingsFctorBase(ToolHandle< ICaloRingsBuilder > &builder, IMessageSvc *msgSvc, const std::string &name)
Main ctor Initialize values.
Definition: CaloRingerReaderUtils.h:48
createSimpleDistributions.builder
builder
Definition: createSimpleDistributions.py:52
Ringer::BuildCaloRingsFctorBase::m_part_counter
size_t m_part_counter
Hold number of particles already procesed for this event:
Definition: CaloRingerReaderUtils.h:66
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
Ringer::BuildCaloRingsFctorBase::m_rsContH
SG::WriteHandle< xAOD::RingSetContainer > * m_rsContH
Keep RingSetContainer handle in scope until finished looping.
Definition: CaloRingerReaderUtils.h:97
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
Ringer::BuildCaloRingsFctorBase::m_part_size
size_t m_part_size
Hold number of particles to be processed:
Definition: CaloRingerReaderUtils.h:68
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132