The Gaudi Framework  v38r0 (2143aa4c)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
GaudiSequencer.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #ifndef GAUDISEQUENCER_H
12 #define GAUDISEQUENCER_H 1
13 
14 // Include files
15 // from Gaudi
16 #include "GaudiAlg/GaudiAlg.h"
17 #include "GaudiAlg/GaudiCommon.h"
18 #include <Gaudi/Sequence.h>
19 
20 // Forward declarations
22 
38 class GAUDI_API GaudiSequencer : public GaudiCommon<Gaudi::Sequence> {
39 public:
42 
43  StatusCode initialize() override;
44  StatusCode execute( const EventContext& ctx ) const override;
45  StatusCode sysExecute( const EventContext& ctx ) override;
46 
48  std::ostream& toControlFlowExpression( std::ostream& os ) const override;
49 
50 private:
51  class AlgorithmEntry final {
52  public:
54  AlgorithmEntry( Gaudi::Algorithm* alg ) : m_algorithm( alg ) {}
55 
56  void setReverse( bool flag ) { m_reverse = flag; }
57 
58  Gaudi::Algorithm* algorithm() const { return m_algorithm; }
59  bool reverse() const { return m_reverse; }
60  void setTimer( int nb ) { m_timer = nb; }
61  int timer() const { return m_timer; }
62 
63  private:
64  Gaudi::Algorithm* m_algorithm = nullptr;
65  bool m_reverse = false;
66  int m_timer = 0;
67  };
68 
70  StatusCode decodeNames();
71 
73  void membershipHandler();
74 
76  this, "VetoObjects", {}, "skip execute if one or more of these TES objects exist" };
78  this, "RequireObjects", {}, "execute only if one or more of these TES objects exist" };
79 
81  this, "Members", {}, &GaudiSequencer::membershipHandler, "list of algorithms" };
82  Gaudi::Property<bool> m_sequential = { this, "Sequential", false, "execute members one at a time" };
83  Gaudi::Property<bool> m_modeOR = { this, "ModeOR", false, "use OR logic instead of AND" };
84  Gaudi::Property<bool> m_ignoreFilter = { this, "IgnoreFilterPassed", false, "always continue" };
85  Gaudi::Property<bool> m_measureTime = { this, "MeasureTime", false, "measure time" };
86  Gaudi::Property<bool> m_returnOK = { this, "ReturnOK", false, "forces the sequencer to return a good status" };
87  Gaudi::Property<bool> m_shortCircuit = { this, "ShortCircuit", true, "stop processing as soon as possible" };
88  Gaudi::Property<bool> m_invert = { this, "Invert", false, "invert the logic result of the sequencer" };
89 
91  ISequencerTimerTool* m_timerTool = nullptr;
92  int m_timer;
93 };
94 #endif // GAUDISEQUENCER_H
GaudiCommon.h
GaudiAlg.h
GaudiSequencer::AlgorithmEntry::algorithm
Gaudi::Algorithm * algorithm() const
Definition: GaudiSequencer.h:58
std::vector
STL class.
GaudiCommon::GaudiCommon
GaudiCommon()=delete
GaudiSequencer::m_timer
int m_timer
Timer number for the sequencer.
Definition: GaudiSequencer.h:92
ISequencerTimerTool
Definition: ISequencerTimerTool.h:24
GaudiSequencer::m_entries
std::vector< AlgorithmEntry > m_entries
List of algorithms to process.
Definition: GaudiSequencer.h:90
GaudiSequencer::AlgorithmEntry::AlgorithmEntry
AlgorithmEntry(Gaudi::Algorithm *alg)
Standard constructor.
Definition: GaudiSequencer.h:54
basic.alg
alg
Definition: basic.py:15
GaudiPython.Pythonizations.ctx
ctx
Definition: Pythonizations.py:578
StatusCode
Definition: StatusCode.h:65
GaudiPython.Pythonizations.execute
execute
Definition: Pythonizations.py:578
std::ostream
STL class.
Gaudi::Algorithm
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:90
GaudiSequencer::AlgorithmEntry::setTimer
void setTimer(int nb)
Definition: GaudiSequencer.h:60
GaudiSequencer::AlgorithmEntry::reverse
bool reverse() const
Definition: GaudiSequencer.h:59
GaudiCommon::initialize
StatusCode initialize() override
standard initialization method
Definition: GaudiCommon.icpp:76
GaudiSequencer::AlgorithmEntry::setReverse
void setReverse(bool flag)
Definition: GaudiSequencer.h:56
GaudiSequencer
Definition: GaudiSequencer.h:38
GaudiSequencer::AlgorithmEntry::timer
int timer() const
Definition: GaudiSequencer.h:61
EventContext
Definition: EventContext.h:34
Sequence.h
GaudiSequencer::AlgorithmEntry
Definition: GaudiSequencer.h:51
GaudiSequencer::membershipHandler
void membershipHandler()
for asynchronous changes in the list of algorithms
Definition: GaudiSequencer.cpp:229
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:81
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:39
GaudiCommon
Definition: GaudiCommon.h:95