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