bugfix: '-nextevent' command in configuration file for publisher inserted correctly...
[u/mrichter/AliRoot.git] / HLT / shuttle / AliHLTPreprocessor.h
1 //-*- Mode: C++ -*-
2 // $Id: AliHLTPreprocessor.h 23318 2008-01-14 12:43:28Z hristov $
3
4 #ifndef ALIHLTPREPROCESSOR_H
5 #define ALIHLTPREPROCESSOR_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /**
11  * @file   AliHLTPreprocessor.h
12  * @author Matthias Richter
13  * @date   2008-01-22
14  * @brief  Container for HLT module preprocessors, acts to the outside as
15  *         HLT preprocessor used by the Offline Shuttle 
16  */
17
18 #include "TList.h"
19 #include "AliPreprocessor.h"
20 #include "AliHLTShuttleInterface.h"
21
22 /**
23  * @class AliHLTPreprocessor
24  * Implementation of the HLT version for the Shuttle Preprocessor.
25  * Since HLT requires a more modular concept of the pre-processors, this
26  * class acts as HLT pre-processor to the outside and container class for
27  * the specific HLT module pre-processors to the inside.
28  *
29  * The base class for HLT module preprocessors is provided by the
30  * AliHLTModulePreprocessor class, which implements the same interface as
31  * the AliPreprocessor.
32  *
33  * The main purpose of the container class is to loop over all module
34  * preprocessors and to make the AliPreprocessor interface methods
35  * publicly available.
36  */
37 class AliHLTPreprocessor : public AliPreprocessor , public AliHLTShuttleInterface
38 {
39  public:
40   /**
41    * Constructor for AliHLTPreprocessor
42    *
43    * @param shuttle pointer to the hosting shuttle
44    */
45   AliHLTPreprocessor(AliShuttleInterface* shuttle);
46   /** Destructor */
47   virtual ~AliHLTPreprocessor();
48
49   /**
50    * Initialize the Preprocessor.
51    *
52    * @param run run number
53    * @param startTime start time of data
54    * @param endTime end time of data
55    */
56   virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
57
58   /**
59    * Function to process data. Inside the preparation and storing to OCDB
60    * should be handled.
61    *
62    * @param dcsAliasMap the map containing aliases and corresponding DCS
63    *                    values and timestamps
64    *
65    * @return 0 on success; a value greater than 0 refers to an error
66    */
67   virtual UInt_t Process(TMap* dcsAliasMap);
68
69   /**
70    * Indicates if DCS data can be processed.
71    *
72    * @return true if DCS data can be processed, else false. 
73    */
74   virtual Bool_t ProcessDCS();
75
76   /** Define for name of the HLT Preproc */
77   static const char* fgkHLTPreproc;                     // see above
78
79   /** Get the run no which has been previously initialized */
80   Int_t PreprocessorGetRun() {return fRun;}
81
82   /** Get the start time no which has been previously initialized */
83   UInt_t PreprocessorGetStartTime() {return fStartTime;}
84
85   /** Get the end time no which has been previously initialized */
86   UInt_t PreprocessorGetEndTime() {return fEndTime;}
87
88   // AliPreprocessor methods made publicly available
89   // the subsequent functions map the AliPreprocessor interface functions in order
90   // to be used by the module proprocessors.
91   Bool_t PreprocessorStore(const char* pathLevel2, const char* pathLevel3, TObject* object,
92                AliCDBMetaData* metaData, Int_t validityStart = 0, Bool_t validityInfinite = kFALSE) {
93     return AliPreprocessor::Store(pathLevel2, pathLevel3, object, metaData, validityStart, validityInfinite);
94   }
95
96   Bool_t PreprocessorStoreReferenceData(const char* pathLevel2, const char* pathLevel3, TObject* object,
97                             AliCDBMetaData* metaData) {
98     return AliPreprocessor::StoreReferenceData(pathLevel2, pathLevel3, object, metaData);
99   }
100
101   Bool_t PreprocessorStoreReferenceFile(const char* localFile, const char* gridFileName) {
102     return AliPreprocessor::StoreReferenceFile(localFile, gridFileName);
103   }
104
105   Bool_t PreprocessorStoreRunMetadataFile(const char* localFile, const char* gridFileName) {
106     return AliPreprocessor::StoreRunMetadataFile(localFile, gridFileName);
107   }
108     
109   const char* PreprocessorGetFile(Int_t system, const char* id, const char* source) {
110     return AliPreprocessor::GetFile(system, id, source);
111   }
112
113   TList* PreprocessorGetFileSources(Int_t system, const char* id = 0) {
114     return AliPreprocessor::GetFileSources(system, id);
115   }
116
117   TList* PreprocessorGetFileIDs(Int_t system, const char* source) {
118     return AliPreprocessor::GetFileIDs(system, source);
119   }
120
121   const char* PreprocessorGetRunParameter(const char* param) {
122     return AliPreprocessor::GetRunParameter(param);
123   }
124
125   AliCDBEntry* PreprocessorGetFromOCDB(const char* pathLevel2, const char* pathLevel3) {
126     return AliPreprocessor::GetFromOCDB(pathLevel2, pathLevel3);
127   }
128
129   const char* PreprocessorGetRunType() {
130     return AliPreprocessor::GetRunType();
131   }
132
133   void PreprocessorLog(const char* message) {
134     AliPreprocessor::Log(message);
135   }
136
137  protected:
138
139  private:
140   /** copy constructor prohibited */
141   AliHLTPreprocessor(const AliHLTPreprocessor& preproc);
142   /** assignment operator prohibited */
143   AliHLTPreprocessor& operator=(const AliHLTPreprocessor& rhs);
144
145   /** list of HLT module processors */
146   TList fProcessors;                                               //!transient
147
148   /** determine which which detectors were active */
149   Int_t fActiveDetectors; // bit array of active detectors
150   
151   /** array of default libraries */
152   static const char* fgkHLTDefaultShuttleLibs[];                   //!transient
153
154   ClassDef(AliHLTPreprocessor, 1);
155 };
156 #endif
157
158