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< StoreGateSvcStoreGateSvc_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::TrigDecisionToolm_trigDecTool {this, "TrigDecisionTool", "Trig::TrigDecisionTool/TrigDecisionTool", "Tool to access TrigDecision"}
 A handle to the TrigDecisionTool.
const Trig::ChainGroupm_all = nullptr
 the trigger chains
const Trig::ChainGroupm_allL1 = nullptr
const Trig::ChainGroupm_allL2 = nullptr
const Trig::ChainGroupm_allEF = nullptr
const Trig::ChainGroupm_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 388 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 23 of file LVL1ResultRetriever.cxx.

23 :
24 AthAlgTool(type, name, parent)
25 {
26 declareInterface<IDataRetriever>(this);
27 }
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 62 of file LVL1ResultRetriever.cxx.

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

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

◆ 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 126 of file LVL1ResultRetriever.cxx.

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