ATLAS Offline Software
Loading...
Searching...
No Matches
JiveXML::LVL1ResultRetriever Class Reference

#include <LVL1ResultRetriever.h>

Inheritance diagram for JiveXML::LVL1ResultRetriever:
Collaboration diagram for JiveXML::LVL1ResultRetriever:

Public Member Functions

 LVL1ResultRetriever (const std::string &type, const std::string &name, const IInterface *parent)
 Standard Constructor.
virtual StatusCode retrieve (ToolHandle< IFormatTool > &FormatTool)
 Retrieve all the data.
virtual std::string dataTypeName () const
 Return the name of the data type.
StatusCode initialize ()
 Initialize the tool.
StatusCode getItemLists (const Trig::ChainGroup *chains, std::string &listName, std::string &prescaleName)
 Subroutine for constructing the item list string.
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 ()
 Return the interface identifier.

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< StoreGateSvc > StoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const std::string m_typeName = "LVL1Result"
 The data type that is generated by this retriever.
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool {this, "TrigDecisionTool", "Trig::TrigDecisionTool/TrigDecisionTool", "Tool to access TrigDecision"}
 A handle to the TrigDecisionTool.
const Trig::ChainGroup * m_all = nullptr
 the trigger chains
const Trig::ChainGroup * m_allL1 = nullptr
const Trig::ChainGroup * m_allL2 = nullptr
const Trig::ChainGroup * m_allEF = nullptr
const Trig::ChainGroup * m_allHLT = nullptr
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 18 of file LVL1ResultRetriever.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 376 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LVL1ResultRetriever()

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

Standard Constructor.

Gaudi default constructor.

Definition at line 17 of file LVL1ResultRetriever.cxx.

17 :
18 AthAlgTool(type, name, parent)
19 {
20 declareInterface<IDataRetriever>(this);
21 }
AthAlgTool()
Default constructor:

Member Function Documentation

◆ dataTypeName()

virtual std::string JiveXML::LVL1ResultRetriever::dataTypeName ( ) const
inlinevirtual

Return the name of the data type.

Implements JiveXML::IDataRetriever.

Definition at line 29 of file LVL1ResultRetriever.h.

29{ return m_typeName; };
const std::string m_typeName
The data type that is generated by this retriever.

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

◆ 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

◆ getItemLists()

StatusCode JiveXML::LVL1ResultRetriever::getItemLists ( const Trig::ChainGroup * chains,
std::string & listName,
std::string & prescaleName )

Subroutine for constructing the item list string.

Get a long strong with all the item lists and prescales that are passed by the given chain group.

Definition at line 56 of file LVL1ResultRetriever.cxx.

57 {
58
59 std::string sig_name;
60
61 //Get a list of L1 items
62 std::vector<std::string> chainList = chains->getListOfTriggers();
63 ATH_MSG_DEBUG("Number of items in chain is " << chainList.size());
64
65 for (auto &trigName : chainList){
66 // Make sure the item is not empty
67 // (can this actually happen ?!?
68 if ( trigName.empty() ) continue;
69
70 auto trigChain = m_trigDecTool->getChainGroup(trigName);
71 // getPrescale() returns 0.0 for the first event: trigger decision tool needs
72 // to internally cache the values prior to the event, but running from RAW the
73 // conditions algorithm only runs during the event. Hence the "live" loading of
74 // prescales are 1 event late - No trigger decisions for the first event
75 if ( std::abs(trigChain->getPrescale()-1.0) > 1e-5 ) continue;
76
77 //Output debug info
78 std::string myItem = trigName;
79 ATH_MSG_VERBOSE(" * item : name=" << myItem
80 << "; result = " << (trigChain->isPassed() ? "passed" : "failed")
81 << "; prescale = " << trigChain->getPrescale());
82
83 // replace HLT with EF (as AtlantisJava doesn't know 'HLT'):
84 if ( myItem.find("HLT",0) != std::string::npos){
85 myItem.replace(0,4,"EF_");
86 ATH_MSG_VERBOSE(trigName << " renamed into: " << myItem);
87 }
88
89 // prescale: see TWiki page TrigDecisionTool15
90
91 //Only add passed items
92 if ( trigChain->isPassed() ) {
93
94 //Add item to list
95 itemList += "-" + myItem;
96
97 // prescale factor
98 prescaleList += "-" + DataType( trigChain->getPrescale() ).toString();
99 }
100 }
101
102
103 //Mark empty item lists
104 if ( itemList.empty() ){ itemList = "empty"; }
105 if ( prescaleList.empty() ){ prescaleList = "empty"; }
106
107 //print debug information
108 ATH_MSG_DEBUG(" itemList: " << itemList);
109 ATH_MSG_DEBUG(" prescaleList: " << prescaleList);
110
111 return StatusCode::SUCCESS;
112 }
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_VERBOSE(x,...)
OFFLINE_FRAGMENTS_NAMESPACE::PointerType DataType
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
A handle to the TrigDecisionTool.

◆ initialize()

StatusCode JiveXML::LVL1ResultRetriever::initialize ( )

Initialize the tool.

  • get handle to TrigDecisionTool
  • define chain groups

Definition at line 28 of file LVL1ResultRetriever.cxx.

28 {
29
30 //be verbose
31 ATH_MSG_VERBOSE("initialize()");
32
33 //Try to retrieve the trig decision tool
34 if ( !m_trigDecTool.retrieve() ) {
35 ATH_MSG_FATAL("Could not retrieve TrigDecisionTool!");
36 return StatusCode::FAILURE;
37 }
38
39 // We define the chain groups relying on the name convention (i.e. all L1
40 // items start their name from "L1_", etc) In principle we would not have to do
41 // so as the TrigDecisionTool jobOptions defines these as public chain
42 // groups. This way, we are independant of jobOptions
43 m_all = m_trigDecTool->getChainGroup(".*");
44 m_allL1 = m_trigDecTool->getChainGroup("L1_.*");
45 m_allL2 = m_trigDecTool->getChainGroup("L2_.*");
46 m_allEF = m_trigDecTool->getChainGroup("EF_.*");
47 m_allHLT = m_trigDecTool->getChainGroup("HLT_.*");
48
49 return StatusCode::SUCCESS;
50 }
#define ATH_MSG_FATAL(x,...)
const Trig::ChainGroup * m_allL1
const Trig::ChainGroup * m_allEF
const Trig::ChainGroup * m_all
the trigger chains
const Trig::ChainGroup * m_allL2
const Trig::ChainGroup * m_allHLT

◆ 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 & JiveXML::IDataRetriever::interfaceID ( )
inlinestaticinherited

Return the interface identifier.

Definition at line 40 of file IDataRetriever.h.

40{ return IID_IDataRetriever; }
static const InterfaceID IID_IDataRetriever("JiveXML::IDataRetriever", 3, 0)

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

◆ 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 368 of file AthCommonDataStore.h.

369 {
370 h.renounce();
372 }
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 352 of file AthCommonDataStore.h.

352 {
354 }

◆ retrieve()

StatusCode JiveXML::LVL1ResultRetriever::retrieve ( ToolHandle< IFormatTool > & FormatTool)
virtual

Retrieve all the data.

Retrieve all trigger info.

  • item lists for L1, L2 and EF, data15: HLT instead of L2,EF
  • prescale lists for L1, L2 and EF, data15: HLT instead of L2,EF
  • passed flags for L1, L2 and EF, data15: HLT instead of L2,EF

Implements JiveXML::IDataRetriever.

Definition at line 120 of file LVL1ResultRetriever.cxx.

120 {
121
122 //be verbose
123 ATH_MSG_VERBOSE("retrieve()");
124
125 //Get the item and prescale lists for all levels
126 std::string itemListL1="";
127 std::string prescaleListL1="";
128 std::string itemListL2="";
129 std::string prescaleListL2="";
130 std::string itemListEF="";
131 std::string prescaleListEF="";
132 std::string itemListHLT="";
133 std::string prescaleListHLT="";
134
135 //Get L1
136 getItemLists( m_allL1, itemListL1, prescaleListL1 ).ignore();
137 //Summarize L1 result
138 int flagL1Passed = m_allL1->isPassed();
139 ATH_MSG_DEBUG("Decision : Level-1 " << ((flagL1Passed)? "passed":"failed"));
140
141 //Get L2
142 getItemLists( m_allL2, itemListL2, prescaleListL2 ).ignore();
143 //Summarize L2 result
144 int flagL2Passed = m_allL2->isPassed();
145 ATH_MSG_DEBUG("Decision : Level-2 " << ((flagL2Passed)? "passed":"failed"));
146
147 //Get EF
148 getItemLists( m_allEF, itemListEF, prescaleListEF ).ignore();
149 //Summarize EF result
150 int flagEFPassed = m_allEF->isPassed();
151 ATH_MSG_DEBUG("Decision : EventFilter " << ((flagEFPassed)? "passed":"failed"));
152
153 //Get HLT
154 getItemLists( m_allHLT, itemListHLT, prescaleListHLT ).ignore();
155 //Summarize HLT result
156 int flagHLTPassed = m_allHLT->isPassed();
157 ATH_MSG_DEBUG("Decision : HLT " << ((flagHLTPassed)? "passed":"failed"));
158
159 //Do not write trigger info if we failed to obtain any of it
160 if ((itemListL1=="empty") && (itemListL2=="empty") && (itemListEF=="empty") && (itemListHLT=="empty") ){
161 ATH_MSG_INFO("All item lists empty, will not write out any data");
162 return StatusCode::SUCCESS;
163 }
164
165 //Store results in data list
166 DataVect itemListL1Vec; itemListL1Vec.push_back( DataType( itemListL1 ));
167 DataVect prescaleListL1Vec; prescaleListL1Vec.push_back( DataType( prescaleListL1 ));
168 DataVect itemListL2Vec; itemListL2Vec.push_back( DataType( itemListL2 ));
169 DataVect prescaleListL2Vec; prescaleListL2Vec.push_back( DataType( prescaleListL2 ));
170 DataVect itemListEFVec; itemListEFVec.push_back( DataType( itemListEF ));
171 DataVect prescaleListEFVec; prescaleListEFVec.push_back( DataType( prescaleListEF ));
172 DataVect itemListHLTVec; itemListHLTVec.push_back( DataType( itemListHLT ));
173 DataVect prescaleListHLTVec; prescaleListHLTVec.push_back( DataType( prescaleListHLT ));
174 DataVect passedTrigger; passedTrigger.push_back(DataType( flagHLTPassed )); //this is just a duplicate
175 DataVect passedL1; passedL1.push_back(DataType( flagL1Passed ));
176 DataVect passedL2; passedL2.push_back(DataType( flagL2Passed ));
177 DataVect passedEF; passedEF.push_back(DataType( flagHLTPassed )); // temporary.
178 DataVect passedHLT; passedHLT.push_back(DataType( flagHLTPassed ));
179 // placeholders only ! For backwards compatibility.
180 // Trigger energies moved to TriggerInfoRetriever
181 DataVect energySumEt; energySumEt.push_back(DataType( -1. ) );
182 DataVect energyEx; energyEx.push_back(DataType( -1. ) );
183 DataVect energyEy; energyEy.push_back(DataType( -1. ) );
184 DataVect energyEtMiss; energyEtMiss.push_back(DataType( -1. ) );
185
186 //Finally create data map and write out results
188 const std::size_t n = itemListL1Vec.size();
189 dataMap["ctpItemList"] = std::move(itemListL1Vec);
190 dataMap["prescaleListL1"] = std::move(prescaleListL1Vec);
191 dataMap["itemListL2"] = std::move(itemListL2Vec);
192 dataMap["prescaleListL2"] = std::move(prescaleListL2Vec);
193 dataMap["itemListEF"] = std::move(itemListHLTVec); // temporary. AtlantisJava doesn't know 'HLT' yet. jpt 23Jun15
194 dataMap["prescaleListEF"] = std::move(prescaleListHLTVec);
195 dataMap["passedTrigger"] = std::move(passedTrigger);
196 dataMap["passedL1"] = std::move(passedL1);
197 dataMap["passedL2"] = passedHLT; // temporary. AtlantisJava doesn't know 'HLT' yet. jpt 23Jun15
198 dataMap["passedEF"] = std::move(passedHLT); // temporary. AtlantisJava doesn't know 'HLT' yet. jpt 23Jun15
199 dataMap["energySumEt"] = std::move(energySumEt);
200 dataMap["energyEx"] = std::move(energyEx);
201 dataMap["energyEy"] = std::move(energyEy);
202 dataMap["energyEtMiss"] = std::move(energyEtMiss);
203
204 ATH_MSG_DEBUG(dataTypeName() << ": "<< n);
205 //forward data to formating tool
206 return FormatTool->AddToEvent(dataTypeName(), "TrigDecision", &dataMap);
207 }
#define ATH_MSG_INFO(x,...)
StatusCode getItemLists(const Trig::ChainGroup *chains, std::string &listName, std::string &prescaleName)
Subroutine for constructing the item list string.
virtual std::string dataTypeName() const
Return the name of the data type.
std::map< std::string, DataVect > DataMap
Definition DataType.h:59
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition DataType.h:58

◆ 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 >, and AthCheckedComponent<::AthAlgTool >.

◆ 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 298 of file AthCommonDataStore.h.

298 {
299 for (auto &a : m_vhka) {
301 for (auto k : keys) {
302 k->setOwner(this);
303 }
304 }
305 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_all

const Trig::ChainGroup* JiveXML::LVL1ResultRetriever::m_all = nullptr
private

the trigger chains

Definition at line 47 of file LVL1ResultRetriever.h.

◆ m_allEF

const Trig::ChainGroup* JiveXML::LVL1ResultRetriever::m_allEF = nullptr
private

Definition at line 50 of file LVL1ResultRetriever.h.

◆ m_allHLT

const Trig::ChainGroup* JiveXML::LVL1ResultRetriever::m_allHLT = nullptr
private

Definition at line 51 of file LVL1ResultRetriever.h.

◆ m_allL1

const Trig::ChainGroup* JiveXML::LVL1ResultRetriever::m_allL1 = nullptr
private

Definition at line 48 of file LVL1ResultRetriever.h.

◆ m_allL2

const Trig::ChainGroup* JiveXML::LVL1ResultRetriever::m_allL2 = nullptr
private

Definition at line 49 of file LVL1ResultRetriever.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 381 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 378 of file AthCommonDataStore.h.

◆ m_trigDecTool

PublicToolHandle<Trig::TrigDecisionTool> JiveXML::LVL1ResultRetriever::m_trigDecTool {this, "TrigDecisionTool", "Trig::TrigDecisionTool/TrigDecisionTool", "Tool to access TrigDecision"}
private

A handle to the TrigDecisionTool.

Definition at line 44 of file LVL1ResultRetriever.h.

44{this, "TrigDecisionTool", "Trig::TrigDecisionTool/TrigDecisionTool", "Tool to access TrigDecision"};

◆ m_typeName

const std::string JiveXML::LVL1ResultRetriever::m_typeName = "LVL1Result"
private

The data type that is generated by this retriever.

Definition at line 41 of file LVL1ResultRetriever.h.

◆ m_varHandleArraysDeclared

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

Definition at line 387 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 386 of file AthCommonDataStore.h.


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