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

#include <PrescalingEmulationTool.h>

Inheritance diagram for PrescalingEmulationTool:
Collaboration diagram for PrescalingEmulationTool:

Public Member Functions

 PrescalingEmulationTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode initialize () override
virtual StatusCode prescaleChains (const EventContext &ctx, const HLT::IDVec &initiallyActive, HLT::IDVec &remainActive, bool forExpressStream=false) const override

Private Types

typedef std::map< HLT::Identifier, float > PrescalingInfo

Private Member Functions

 PrescalingEmulationTool ()

Private Attributes

Gaudi::Property< bool > m_keepUnknownChains
Gaudi::Property< std::vector< std::string > > m_prescalingConfig
ATHRNG::RNGWrapper m_RNGEngines
PrescalingInfo m_prescalingInfo

Detailed Description

Definition at line 30 of file PrescalingEmulationTool.h.

Member Typedef Documentation

◆ PrescalingInfo

typedef std::map<HLT::Identifier, float> PrescalingEmulationTool::PrescalingInfo
private

Definition at line 54 of file PrescalingEmulationTool.h.

Constructor & Destructor Documentation

◆ PrescalingEmulationTool() [1/2]

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

Definition at line 16 of file PrescalingEmulationTool.cxx.

19 : base_class(type, name, parent),
const std::function< CLHEP::HepRandomEngine *(void) > RanluxFactory
size_t getNSlots()
Return the number of event slots.

◆ PrescalingEmulationTool() [2/2]

PrescalingEmulationTool::PrescalingEmulationTool ( )
private

Member Function Documentation

◆ initialize()

StatusCode PrescalingEmulationTool::initialize ( )
overridevirtual

Definition at line 23 of file PrescalingEmulationTool.cxx.

23 {
24 for ( const std::string& confElement: m_prescalingConfig ) {
25 std::string chainName( confElement, 0, confElement.find(':') );
26 std::string psValue( confElement, confElement.find(':')+1 );
27 ATH_MSG_DEBUG( "Decoded part of the config " << chainName << " " << psValue );
28 m_prescalingInfo[HLT::Identifier( chainName ) ] = 1./std::stof( psValue );
29 }
30 return StatusCode::SUCCESS;
31}
#define ATH_MSG_DEBUG(x)
Gaudi::Property< std::vector< std::string > > m_prescalingConfig

◆ prescaleChains()

StatusCode PrescalingEmulationTool::prescaleChains ( const EventContext & ctx,
const HLT::IDVec & initiallyActive,
HLT::IDVec & remainActive,
bool forExpressStream = false ) const
overridevirtual

Definition at line 34 of file PrescalingEmulationTool.cxx.

37 {
38
39 ATH_MSG_DEBUG("Express stream prescaling ignored in Emulation tool" << forExpressStream);
40
41 if ( initiallyActive.empty() ) {
42 return StatusCode::SUCCESS;
43 }
44
45 // obtain CTP time
46 remainActive.reserve( initiallyActive.size() );
47
48 // create the seed from the event time
49 size_t seed = ctx.eventID().time_stamp() ^ ctx.eventID().time_stamp_ns_offset();
50 CLHEP::HepRandomEngine* engine = m_RNGEngines.getEngine( ctx );
51 engine->setSeed( seed, 0 );
52 for ( auto ch: initiallyActive ) {
53 PrescalingInfo::const_iterator chainPS = m_prescalingInfo.find( ch );
54 const bool decision = (chainPS != m_prescalingInfo.end()) ?
55 engine->flat() < chainPS->second :
57 ATH_MSG_DEBUG("Prescaling decision for chain " << ch << " " << decision );
58 if ( decision ) {
59 remainActive.push_back( ch );
60 }
61 }
62 return StatusCode::SUCCESS;
63}
Gaudi::Property< bool > m_keepUnknownChains
setBGCode setTAP setLVL2ErrorBits bool

Member Data Documentation

◆ m_keepUnknownChains

Gaudi::Property<bool> PrescalingEmulationTool::m_keepUnknownChains
private
Initial value:
{
this, "KeepUnknownChains", true, "If True then chains for which prescaling information is not set are kept"}

Definition at line 46 of file PrescalingEmulationTool.h.

46 {
47 this, "KeepUnknownChains", true, "If True then chains for which prescaling information is not set are kept"};

◆ m_prescalingConfig

Gaudi::Property< std::vector<std::string> > PrescalingEmulationTool::m_prescalingConfig
private
Initial value:
{
this, "Prescales", {}, "The prescaling info in the form: \"chainName:PSValue\""}

Definition at line 49 of file PrescalingEmulationTool.h.

49 {
50 this, "Prescales", {}, "The prescaling info in the form: \"chainName:PSValue\""};

◆ m_prescalingInfo

PrescalingInfo PrescalingEmulationTool::m_prescalingInfo
private

Definition at line 55 of file PrescalingEmulationTool.h.

◆ m_RNGEngines

ATHRNG::RNGWrapper PrescalingEmulationTool::m_RNGEngines
private

Definition at line 52 of file PrescalingEmulationTool.h.


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