00001 #ifndef EVENT_LOOP_ALGORITHM_HH
00002 #define EVENT_LOOP_ALGORITHM_HH
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00017
00018
00019
00020 #include <EventLoop/Global.h>
00021
00022 #include <TNamed.h>
00023 #include <EventLoop/StatusCode.h>
00024
00025 class TH1;
00026 class MsgStream;
00027
00028 namespace EL
00029 {
00030 class Algorithm : public TNamed
00031 {
00032
00033
00034
00035
00038 public:
00039 void testInvariant () const;
00040
00041
00045 public:
00046 Algorithm ();
00047
00048
00051 public:
00052 ~Algorithm ();
00053
00054
00057 public:
00058 Worker *wk () const;
00059
00060
00066 public:
00067 void book (const TH1& hist);
00068
00069
00075 public:
00076 TH1 *hist (const std::string& name) const;
00077
00078
00079
00089
00095 public:
00096 MsgStream& msg () const;
00097
00098
00105 public:
00106 MsgStream& msg (int level) const;
00107
00108
00112 public:
00113 bool msgLvl (int lvl) const;
00114
00115
00120 public:
00121 void setMsgLevel (int level);
00122
00124
00125
00126
00127
00128
00129
00130
00139 private:
00140 virtual StatusCode setupJob (Job& job);
00141
00142
00149 private:
00150 virtual StatusCode fileExecute ();
00151
00152
00158 private:
00159 virtual StatusCode endOfFile ();
00160
00161
00167 private:
00168 virtual StatusCode changeInput (bool firstFile);
00169
00170
00181 private:
00182 virtual StatusCode initialize ();
00183
00184
00192 private:
00193 virtual StatusCode histInitialize ();
00194
00195
00199 private:
00200 virtual StatusCode execute ();
00201
00202
00209 private:
00210 virtual StatusCode postExecute ();
00211
00212
00219 private:
00220 virtual StatusCode finalize ();
00221
00222
00229 private:
00230 virtual StatusCode histFinalize ();
00231
00232
00239 private:
00240 virtual bool hasName (const std::string& name) const;
00241
00242
00243
00244
00245
00246
00247
00248 #if 1
00249 friend class Job;
00250 private:
00251 #else
00252 public:
00253 #endif
00254
00263 void sysSetupJob (Job& job);
00264
00265
00266
00267
00268
00269
00270
00274 friend class Worker;
00275
00276
00277 private:
00278 Worker *m_wk;
00279
00281 private:
00282 mutable MsgStream *m_msg = nullptr;
00283
00285 private:
00286 int m_msgLevel = 3;
00287
00288 ClassDef(Algorithm, 1);
00289 };
00290 }
00291
00292 #endif