Diana Software
QSequence.hh
Go to the documentation of this file.
1 
12 #ifndef _Q_SEQUENCE_H
13 #define _Q_SEQUENCE_H
14 
15 
16 #include <vector>
17 #include <string>
18 #include <ostream>
19 #include <map>
20 #include <set>
21 
22 #include "QGlobalDataManager.hh"
23 #include "QDiana.hh"
24 #include "QNamed.hh"
25 #include "QRWCommon.hh"
26 #include "QSequenceConfig.hh"
27 
28 class QError;
29 
31 
32 class QBaseModule;
33 class QReader;
34 class QModule;
35 class QDriver;
36 class QWriter;
37 class QEvent;
38 class QEventList;
39 
40 class QSequence : public QNamed {
41 public:
42 
48  };
49 
51  QSequence(const std::string&);
53  virtual ~QSequence();
55  bool Run();
57  void Dump(std::ostream&) const;
58 
65  const QGlobalDataManager& GlobalData() const { return fGlobalData; }
73 
79  void SetRunAgain(bool b) { fRunAgain = b; }
81  bool GetRunAgain() const { return fRunAgain; }
83  unsigned int GetIteration() const { return fIteration; }
85  size_t GetNumber() const { return fCounter; }
89  const QError& JumpToEvent(Long64_t event, QBaseModule* caller);
90 
92  void PrintEvents(const QEvent& ev, const QEventList& evList) const;
94  void PrintGlobal() const;
98  std::string GetReaderName() const;
100  std::string GetWriterName() const;
102  std::string GetDriverName() const;
103 
104 private:
112  std::vector< QBaseModule* > modules;
113 
116 
118  unsigned int fIteration;
119 
121  bool fRunAgain;
122 
124  static size_t fCounter;
125 
128 
131 
135  void SaveConfig();
136 
137  // a sequence is built by the QModuleFactory class
138  friend class QModuleFactory;
139 
140 };
141 
143 
144 #endif
QVector b
Definition: CheckOF.C:21
#define Q_END_NAMESPACE
Definition: QDiana.hh:22
#define Q_BEGIN_NAMESPACE
Definition: QDiana.hh:20
Base class for modules.
Definition: QBaseModule.hh:57
Base class for diana drivers.
Definition: QDriver.hh:32
error class with error type and description
Definition: QError.hh:115
list of references to const QEvent (s)
Definition: QEventList.hh:21
diana event
Definition: QEvent.hh:46
Object to manage I/O (DB, file, or memory) of diana global quantities.
module instantiation class
Base class for diana modules.
Definition: QModule.hh:54
base class for anything that has a name
Definition: QNamed.hh:14
Base class for diana event readers.
Definition: QReader.hh:50
QObject storing a QSequence configuration, a set of QModuleConfigs.
Diana Reconstruction program.
Definition: QSequence.hh:40
void SetRunAgain(bool b)
Run the sequence again.
Definition: QSequence.hh:79
const QError & JumpToEvent(Long64_t event, QBaseModule *caller)
Jump to an event in a particular in a module.
Definition: QSequence.cc:325
QSequence(const std::string &)
Ctor that takes the name of the sequence as argument.
Definition: QSequence.cc:22
virtual ~QSequence()
Default dtor.
Definition: QSequence.cc:32
bool GetRunAgain() const
Check if this sequence is going to be rerun.
Definition: QSequence.hh:81
SequenceStatus GetSequenceStatus() const
Get the sequence status (Config/Init/Do/Done)
Definition: QSequence.hh:87
static size_t fCounter
Static sequence counter.
Definition: QSequence.hh:124
unsigned int GetIteration() const
Definition: QSequence.hh:83
QGlobalDataManager fGlobalData
Global variables that a module can save.
Definition: QSequence.hh:115
size_t GetNumber() const
Get the number of this sequence.
Definition: QSequence.hh:85
QDriver * p_Driver
Pointer to a driver.
Definition: QSequence.hh:110
SequenceStatus fSequenceStatus
Status of the current sequence.
Definition: QSequence.hh:130
void PrintGlobal() const
Print the global data.
Definition: QSequence.cc:376
unsigned int fIteration
Iterations counter.
Definition: QSequence.hh:118
const QGlobalDataManager & GlobalData() const
Access to the global data manager for the sequence.
Definition: QSequence.hh:65
std::vector< QBaseModule * > modules
The list of the modules.
Definition: QSequence.hh:112
void Dump(std::ostream &) const
Dump the content of the sequence.
Definition: QSequence.cc:70
std::string GetReaderName() const
Get the name of the reader.
Definition: QSequence.cc:387
QWriter * p_Writer
Pointer to the writer.
Definition: QSequence.hh:108
QGlobalDataManager & GlobalData()
Access to the global data manager for the sequence.
Definition: QSequence.hh:72
@ kSequenceDo
Definition: QSequence.hh:46
@ kSequenceDone
Definition: QSequence.hh:47
@ kSequenceInit
Definition: QSequence.hh:45
@ kSequenceConfig
Definition: QSequence.hh:44
QRWCommon fRWCommon
The Reader/Writer data shared between the reader and writer.
Definition: QSequence.hh:127
QReader * p_Reader
Pointer to the reader.
Definition: QSequence.hh:106
void SaveConfig()
Save the config data to file.
Definition: QSequence.cc:402
void PrintEvents(const QEvent &ev, const QEventList &evList) const
Print the event list.
Definition: QSequence.cc:336
std::string GetWriterName() const
Get the name of the writer.
Definition: QSequence.cc:392
bool Run()
The core of the sequence. Loops over Init's, Do's and Done's.
Definition: QSequence.cc:90
void CheckModuleWithNeighbours()
Check if any of the modules have neighbours.
Definition: QSequence.cc:298
QSequenceConfig fConfig
Sequence config data.
Definition: QSequence.hh:133
bool fRunAgain
Run again.
Definition: QSequence.hh:121
std::string GetDriverName() const
Get the name of the driver.
Definition: QSequence.cc:397
Abstract class for diana writers.
Definition: QWriter.hh:30