ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
VP1Alg Class Reference

#include <VP1Alg.h>

Inheritance diagram for VP1Alg:
Collaboration diagram for VP1Alg:

Public Member Functions

 VP1Alg (const std::string &name, ISvcLocator *pSvcLocator)
 
 ~VP1Alg ()
 
virtual StatusCode initialize () override
 
virtual StatusCode execute () override
 
virtual StatusCode finalize () override
 
void handle (const Incident &inc) override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

Gaudi::Property< std::string > m_atlasRelease {this, "AtlasRelease", "", "The current, in use Atlas release"}
 
Gaudi::Property< bool > m_mfOn
 
Gaudi::Property< int > m_mfLimit
 
Gaudi::Property< std::string > m_mfSourceDir
 
Gaudi::Property< std::string > m_mfLocalCopyDir
 
Gaudi::Property< std::vector< std::string > > m_mfAvailableLocalInputDirectories
 
Gaudi::Property< std::string > m_cruiseInitialMode
 
Gaudi::Property< unsigned > m_cruiseInitialUpdateSeconds {this, "CruiseInitialSeconds", 10, "Cruise mode -- Initial Cruise update time, in seconds. Default: 10"}
 
Gaudi::Property< std::vector< std::string > > m_initialvp1files
 
Gaudi::Property< bool > m_noGui
 
IToolSvc * m_toolSvc
 
VP1Guim_vp1gui
 
DataObjIDColl m_extendedExtraObjects
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 31 of file VP1Alg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ VP1Alg()

VP1Alg::VP1Alg ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 28 of file VP1Alg.cxx.

28  :
29  AthAlgorithm(name, svcLocator),
30  m_toolSvc(0),m_vp1gui(0)
31 {
32 
33 
34  /*
35  // This is Work In Progress
36  // Those properties are needed in VP1 configurations, which
37  // still need to be migrated to CA.
38  // See the header file for details.
39  //
40  declareProperty("InitiallyLoadedVP1Files",m_initialvp1files);
41  declareProperty("InitialCruiseMode",m_initialCruiseMode="NONE");
42  declareProperty("InitialCruiseModePeriod",m_initialCruiseSeconds=10);
43 
44  declareProperty("NoGui",m_noGui=false);
45 
46  // **** MF ****
47  declareProperty("MultipleFilesON",m_mfOn=false);
48  declareProperty("MFNumFileLimit",m_mfLimit=10);
49  declareProperty("MFSourceDir",m_mfSourceDir="");
50  declareProperty("MFLocalCopyDir",m_mfLocalCopyDir="");
51  declareProperty("MFAvailableLocalInputDirectories",m_mfAvailableLocalInputDirectories);
52 */
53 
54  // Two ways of running in multiple files mode:
55  //
56  // 1) Source is directory on filesystem (e.g. for use in the control room).
57  // * MFSourceDir indicates the directory where files can be found.
58  // * MFLocalCopyDir indicates the temporary directory where
59  // files are copied before we tell pool to get them there.
60  // 2) Source is web directory
61  // * MFSourceDir indicates http url to small text file (to be
62  // parsed by VP1Gui/VP1EvtsOnServerInfo), with a list of
63  // available files (assumed to be in the same dir).
64  // Example value: "http://pcatdwww.cern.ch/atlas-point1/vp1events/fileinfo.txt"
65  // * MFLocalCopyDir has same meaning as before, but this time a
66  // subdirectory of it, "active_downloads", will be used to
67  // download files before they are subsequently moved to
68  // MFLocalCopyDir itself.
69 
70  // **** MF ****
71 
72  // Pick up patched Coin
73  ::setenv("LCGPATCH_COINMULTISELECT","1",1);
74 }

◆ ~VP1Alg()

VP1Alg::~VP1Alg ( )

Definition at line 77 of file VP1Alg.cxx.

78 {
79 }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode VP1Alg::execute ( )
overridevirtual

Definition at line 134 of file VP1Alg.cxx.

135 {
136 
137  // Here you do everything that needs to be done on every single
138  // events, e.g. read input variables, apply cuts, and fill
139  // histograms and trees, if any.
140 
141  msg(MSG::DEBUG) <<" in execute() " << endmsg;
142 
143  if (!m_vp1gui)
144  return StatusCode::FAILURE;
145 
146  if (!m_noGui&&!m_vp1gui->hasBeenInitialised()) {
147  m_vp1gui->init();//Launch!
148  }
149 
150 
151 
152 
153  unsigned int trigType = 0;
154 
155  // retrieve the eventInfo object from the event store
156  const xAOD::EventInfo *eventInfo = nullptr;
157  StatusCode status = evtStore()->retrieve (eventInfo, "EventInfo");
158 
159  if(status.isSuccess()) {
160  // Get run/event number:
161  const unsigned long long eventNumber = eventInfo->eventNumber();
162  const uint32_t runNumber = eventInfo->runNumber();
163  msg(MSG::DEBUG) << " Got run number = " << runNumber
164  << ", event number = " << eventNumber << endmsg;
165 
166  trigType = eventInfo->level1TriggerType();
167 
168  // Get time stamp:
169  uint32_t time = eventInfo->timeStamp();//0 means no info.
170 
172  return StatusCode::SUCCESS;
173  } else {
174  msg(MSG::INFO) << " Ending application gracefully." << endmsg;
175  return StatusCode::FAILURE;
176  }
177  return StatusCode::SUCCESS;
178  }
179 
180  msg(MSG::DEBUG) << " Unable to retrieve EventInfo from StoreGate... using dummy values" << endmsg;
181 
182  if (m_noGui||m_vp1gui->executeNewEvent(999,999,trigType,0)) {
183  return StatusCode::SUCCESS;
184  } else {
185  msg(MSG::INFO) << " Ending application gracefully." << endmsg;
186  return StatusCode::FAILURE;
187  }
188 
189  return StatusCode::SUCCESS;
190 
191 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode VP1Alg::finalize ( )
overridevirtual

Definition at line 194 of file VP1Alg.cxx.

195 {
196  msg(MSG::INFO) <<" in finalize() " << endmsg;
197 
198  if (!m_vp1gui)
199  return StatusCode::FAILURE;
200 
201  if (!m_noGui)
202  m_vp1gui->cleanup();
203  delete m_vp1gui;
204 
205  return StatusCode::SUCCESS;
206 }

◆ handle()

void VP1Alg::handle ( const Incident &  inc)
override

Definition at line 209 of file VP1Alg.cxx.

210 {
211  msg(MSG::INFO) << "Handling incident '" << inc.type() << "'" << endmsg;
212 
213  if (!m_vp1gui) {
214  msg(MSG::INFO) << "Aborting due to null VP1Gui pointer." << endmsg;
215  return;
216  }
217 
218  const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc);
219  if(fileInc == 0) {
220  msg(MSG::WARNING) << " Unable to cast to file incident" << endmsg;
221  return;
222  }
223  else
224  msg(MSG::DEBUG) << " Casting to file incident successful" << endmsg;
225 
226  // Locate the EventSelector
227  ServiceHandle<IEvtSelector> pEvtSelector("EventSelector", this->name());
228  StatusCode sc = pEvtSelector.retrieve();
229 
230  if(!sc.isSuccess() || 0 == pEvtSelector) {
231  msg(MSG::WARNING) << "Could not find EventSelector" << endmsg;
232  return;
233  }
234  else
235  msg(MSG::DEBUG) << " Got EventSelector" << endmsg;
236 
237  IProperty* propertyServer = dynamic_cast<IProperty*>(pEvtSelector.operator->());
238  if (!propertyServer) {
239  msg(MSG::WARNING) << "Could not get propertyServer" << endmsg;
240  return;
241  }
242 
243  std::vector<std::string> vect;
244  StringArrayProperty inputCollections("InputCollections", vect);
245 
246  sc = propertyServer->getProperty(&inputCollections);
247  if(!sc.isSuccess()) {
248  msg(MSG::INFO) << "Could not get InputCollections property" << endmsg;
249  return;
250  }
251  else
252  msg(MSG::DEBUG) << " Got InputCollections property" << endmsg;
253 
254  for (const std::string& s : inputCollections.value()) {
255  if(s != fileInc->fileName())
256  vect.push_back(s);
257  }
258 
259  if(m_mfOn) {
260  std::string strNewFileName = m_vp1gui->nextRequestedEventFile();
261 
262  if (strNewFileName.empty())
263  return;
264  if (!VP1FileUtilities::fileExistsAndReadable(strNewFileName)) {
265  msg(MSG::WARNING) << " File requested by VP1 does not exists or is not readable: "<<strNewFileName<<". Ending." << endmsg;
266  return;
267  }
268 
269  vect.push_back(strNewFileName);
270  msg(MSG::INFO) << " Setting next event file: " << strNewFileName<< endmsg;
271  }
272  else {
273  std::vector<std::string> strNewFileNames = m_vp1gui->userRequestedFiles();
274  for(unsigned i=0; i<strNewFileNames.size(); ++i) {
275  const std::string& strNewFileName = strNewFileNames[i];
276  if (strNewFileName.empty())
277  continue;
278  if (!VP1FileUtilities::fileExistsAndReadable(strNewFileName)) {
279  msg(MSG::WARNING) << " File requested by VP1 does not exists or is not readable: " << strNewFileName << endmsg;
280  continue;
281  }
282  vect.push_back(strNewFileName);
283  msg(MSG::INFO) << " Setting next event file: " << strNewFileName<< endmsg;
284  }
285  }
286 
287  StringArrayProperty newInputCollections("InputCollections", vect);
288 
289  if(propertyServer->setProperty(newInputCollections)!=StatusCode::SUCCESS)
290  msg(MSG::WARNING) << "Could not set new InputCollections property" << endmsg;
291  else
292  msg(MSG::DEBUG) << " InputCollections property set" << endmsg;
293 }

◆ initialize()

StatusCode VP1Alg::initialize ( )
overridevirtual

Definition at line 82 of file VP1Alg.cxx.

83 {
84  msg(MSG::INFO) << " in initialize() " << endmsg;
85 
86  //ToolSvc
87  StatusCode status = service("ToolSvc",m_toolSvc);
88  if (status.isFailure()||!m_toolSvc) {
89  msg(MSG::ERROR) << " Unable to get ToolSvc!" << endmsg;
90  return status;
91  }
92 
94  for (it = m_initialvp1files.begin();it!=itE;++it) {
95  std::string file = PathResolver::find_file (*it, "DATAPATH");
96  if (file=="")
97  file = PathResolver::find_file (*it+".vp1", "DATAPATH");
98  if (file!="")
99  *it = file;
100  }
101 
102  // use the incident service to register a handler
103  IIncidentSvc* incsvc = 0;
104  status = service("IncidentSvc", incsvc, true);
105 
106  if(status.isFailure() || incsvc==0) {
107  msg(MSG::WARNING) << "Unable to get IncidentSvc! MF mechanism is disabled" << endmsg;
108  return StatusCode::SUCCESS;
109  }
110 
111  std::string endfilekey("EndTagFile");
112  incsvc->addListener(this, endfilekey, 0);
113  msg(MSG::DEBUG) << "Added listener on "<<endfilekey << endmsg;
114 
115  //Create VP1 gui object and see if it considers settings to be valid.
116  m_vp1gui = new VP1Gui(&(*evtStore()),&(*detStore()),serviceLocator(),m_toolSvc,
120  (m_mfOn ? m_mfSourceDir : ""),
121  (m_mfOn ? m_mfLocalCopyDir : ""),
122  m_mfLimit,
123  ( m_mfOn ? m_mfAvailableLocalInputDirectories : Gaudi::Property<std::vector<std::string>>() ) );
124  if (!m_vp1gui->argumentsAreValid()) {
125  delete m_vp1gui;
126  m_vp1gui = 0;
127  exit(1);//Should we do this? It is kind of nice to not have to dig through the logfile to find the failure.
128  return StatusCode::FAILURE;
129  }
130  return StatusCode::SUCCESS;
131 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::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.

◆ msg() [1/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::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< Algorithm > >::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< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_atlasRelease

Gaudi::Property<std::string> VP1Alg::m_atlasRelease {this, "AtlasRelease", "", "The current, in use Atlas release"}
private

Definition at line 48 of file VP1Alg.h.

◆ m_cruiseInitialMode

Gaudi::Property<std::string> VP1Alg::m_cruiseInitialMode
private
Initial value:
{this, "CruiseInitialMode", "NONE",
"Cruise mode -- Initial Cruise mode: 'NONE', 'EVENT', 'TAB', 'BOTH'. Default: 'NONE'"}

Definition at line 61 of file VP1Alg.h.

◆ m_cruiseInitialUpdateSeconds

Gaudi::Property<unsigned> VP1Alg::m_cruiseInitialUpdateSeconds {this, "CruiseInitialSeconds", 10, "Cruise mode -- Initial Cruise update time, in seconds. Default: 10"}
private

Definition at line 63 of file VP1Alg.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_initialvp1files

Gaudi::Property<std::vector<std::string> > VP1Alg::m_initialvp1files
private
Initial value:
{
this, "InitialInputVP1Files", {}, "a vector of input VP1 files"}

Definition at line 65 of file VP1Alg.h.

◆ m_mfAvailableLocalInputDirectories

Gaudi::Property<std::vector<std::string> > VP1Alg::m_mfAvailableLocalInputDirectories
private
Initial value:
{this, "MFAvailableLocalInputDirectories", {},
"MultipleFiles mode -- Will only be used if sourcedir is set and local"}

Definition at line 58 of file VP1Alg.h.

◆ m_mfLimit

Gaudi::Property<int> VP1Alg::m_mfLimit
private
Initial value:
{this, "MFNumFileLimit", 10,
"MultipleFiles mode -- Maximum number of local copies to keep"}

Definition at line 52 of file VP1Alg.h.

◆ m_mfLocalCopyDir

Gaudi::Property<std::string> VP1Alg::m_mfLocalCopyDir
private
Initial value:
{this, "MFLocalCopyDir", ".",
"MultipleFiles mode -- Path of the directory to keep local copies of processed events. Default '.' (the local run folder)"}

Definition at line 56 of file VP1Alg.h.

◆ m_mfOn

Gaudi::Property<bool> VP1Alg::m_mfOn
private
Initial value:
{this, "MultipleFilesON", false,
"Flag to turn the 'Multiple Files' mode ON/OFF. Default OFF"}

Definition at line 50 of file VP1Alg.h.

◆ m_mfSourceDir

Gaudi::Property<std::string> VP1Alg::m_mfSourceDir
private
Initial value:
{this, "MFSourceDir", "",
"MultipleFiles mode -- Path of the source directory, where input data files are stored and from which events are taken from"}

Definition at line 54 of file VP1Alg.h.

◆ m_noGui

Gaudi::Property<bool> VP1Alg::m_noGui
private
Initial value:
{this, "noGUI", false,
"Flag to turn OFF the GUI. Default: FALSE (i.e., GUI is ON)"}

Definition at line 68 of file VP1Alg.h.

◆ m_toolSvc

IToolSvc* VP1Alg::m_toolSvc
private

Definition at line 75 of file VP1Alg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vp1gui

VP1Gui* VP1Alg::m_vp1gui
private

Definition at line 76 of file VP1Alg.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
VP1FileUtilities::fileExistsAndReadable
static bool fileExistsAndReadable(const std::string &)
Definition: VP1FileUtilities.cxx:211
VP1Alg::m_vp1gui
VP1Gui * m_vp1gui
Definition: VP1Alg.h:76
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
VP1Gui
Definition: VP1Gui.h:28
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
VP1Gui::cleanup
void cleanup()
Definition: VP1Gui.cxx:205
VP1Alg::m_initialvp1files
Gaudi::Property< std::vector< std::string > > m_initialvp1files
Definition: VP1Alg.h:65
VP1Gui::init
void init()
Definition: VP1Gui.cxx:181
skel.it
it
Definition: skel.GENtoEVGEN.py:423
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
VP1Gui::executeNewEvent
bool executeNewEvent(const int &run, const uint64_t &event, const unsigned &triggerType=0, const unsigned &time=0)
Definition: VP1Gui.cxx:212
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
VP1Alg::m_mfSourceDir
Gaudi::Property< std::string > m_mfSourceDir
Definition: VP1Alg.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
VP1Alg::m_cruiseInitialMode
Gaudi::Property< std::string > m_cruiseInitialMode
Definition: VP1Alg.h:61
VP1Alg::m_noGui
Gaudi::Property< bool > m_noGui
Definition: VP1Alg.h:68
VP1Alg::m_mfOn
Gaudi::Property< bool > m_mfOn
Definition: VP1Alg.h:50
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TruthTest.itE
itE
Definition: TruthTest.py:25
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TileAANtupleConfig.inputCollections
inputCollections
Definition: TileAANtupleConfig.py:133
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
lumiFormat.i
int i
Definition: lumiFormat.py:92
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
VP1Alg::m_mfAvailableLocalInputDirectories
Gaudi::Property< std::vector< std::string > > m_mfAvailableLocalInputDirectories
Definition: VP1Alg.h:58
file
TFile * file
Definition: tile_monitor.h:29
VP1Gui::hasBeenInitialised
bool hasBeenInitialised()
Definition: VP1Gui.cxx:175
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::eventNumber
eventNumber
Definition: EventInfo_v1.cxx:124
getCastorRun.setenv
def setenv()
Definition: getCastorRun.py:9
calibdata.exit
exit
Definition: calibdata.py:236
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
VP1Gui::userRequestedFiles
std::vector< std::string > userRequestedFiles()
Definition: VP1Gui.cxx:237
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
VP1Alg::m_mfLimit
Gaudi::Property< int > m_mfLimit
Definition: VP1Alg.h:52
xAOD::EventInfo_v1::level1TriggerType
uint16_t level1TriggerType() const
The Level-1 trigger type.
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
xAOD::EventInfo_v1::timeStamp
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
VP1Gui::argumentsAreValid
bool argumentsAreValid() const
Definition: VP1Gui.cxx:92
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
VP1Alg::m_toolSvc
IToolSvc * m_toolSvc
Definition: VP1Alg.h:75
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
VP1Gui::nextRequestedEventFile
std::string nextRequestedEventFile() const
Definition: VP1Gui.cxx:231
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
merge.status
status
Definition: merge.py:17
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
VP1Alg::m_mfLocalCopyDir
Gaudi::Property< std::string > m_mfLocalCopyDir
Definition: VP1Alg.h:56
VP1Alg::m_cruiseInitialUpdateSeconds
Gaudi::Property< unsigned > m_cruiseInitialUpdateSeconds
Definition: VP1Alg.h:63
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
ServiceHandle< IEvtSelector >