QSequence.hh

00001 /* Cuore Reconstruction program
00002  *
00003  * Author: MP 11/11/05
00004  * $Id: QSequence.hh 530 2006-12-06 12:22:39Z vignatim $
00005  *
00006  * Class QSequence
00007  *
00008 */
00009 
00010 #ifndef _Q_SEQUENCE_H
00011 #define _Q_SEQUENCE_H
00012 
00013 
00014 #include <vector>
00015 #include <string>
00016 #include <ostream>
00017 #include <map>
00018 
00019 #include "QGlobalDataManager.hh"
00020 #include "QCuore.hh"
00021 #include "QNamed.hh"
00022 
00023 class QBaseModule;
00024 class QReader;
00025 class QModule;
00026 class QDriver;
00027 class QWriter;
00028 class MDefaults;
00029 class QError;
00030 
00031 class QSequence : public QNamed {
00032         public:
00033                 
00034                 QSequence(const std::string&);
00035                 
00036                 virtual ~QSequence();
00037 
00038                 bool Run();
00039 
00040                 void Dump(std::ostream&);
00041 
00042                 // each sequence has variables that can be stored by modules
00043                 QGlobalDataManager& AuxData() {return fGlobalData;}
00044 
00045                 // modules can force the framework to rerun the sequence they belong to.
00046                 void SetRunAgain(bool b) {fRunAgain = b;}
00047                 bool GetRunAgain() {return fRunAgain;}
00048                 unsigned int GetIteration() {return fIteration;}
00049         size_t GetNumber() {return fCounter;}
00050 
00051         const QError& JumpToEvent(unsigned int event, QBaseModule* caller);
00052 
00053         private:
00054                 QReader *p_Reader;
00055                 QWriter *p_Writer;
00056         MDefaults *p_Defaults;
00057                 QDriver *p_Driver;
00058                 std::vector< QBaseModule* > modules;
00059 
00060                 // variables that a module can save
00061                 QGlobalDataManager fGlobalData;
00062                 
00063                 // iterations counter
00064                 unsigned int fIteration;
00065 
00066                 // run again
00067                 bool fRunAgain;
00068         
00069         // sequence counter
00070         static size_t fCounter;
00071 
00072                 // a sequence is built by the QModuleFactory class
00073                 friend class QModuleFactory;
00074 };
00075 
00076 #endif

Generated on Tue Nov 16 10:49:56 2010 for CUORE Software by  doxygen 1.5.6