adding prediction processor for the GRP, moving some functions to the PredictionProce...
[u/mrichter/AliRoot.git] / HLT / pendolino / PredictionProcessor / GRP / AliHLTPredictionProcessorGRP.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTPREDICTIONPROCESSORGRP_H
5 #define ALIHLTPREDICTIONPROCESSORGRP_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 //  @file   AliHLTPredictionProcessorGRP.cxx
11 //  @author Matthias Richter
12 //  @date   2010-04-12
13 //  @brief  Prediction processor for the GRP entry
14 // 
15
16 #include "AliHLTPredictionProcessorInterface.h"
17
18 /**
19  * Predition Processor for the GRP
20  *
21  */
22 class AliHLTPredictionProcessorGRP : public AliHLTPredictionProcessorInterface
23 {
24 public:
25         
26   /**
27    * Constructor for AliHLTPredictionProcessorGRP
28    *
29    * @param pendolino pointer to the hosting pendolino
30    */
31   AliHLTPredictionProcessorGRP(AliHLTPendolino* pendolino);
32
33   /// Destructor for AliHLTPredictionProcessorGRP
34   virtual ~AliHLTPredictionProcessorGRP();
35                 
36   /**
37    * Virtual function to force the Prediction Processor to implement
38    * a function to flag that prediction making is required.
39    * This function is called by the Pendolino before the fetched DCS data
40    * is handed in for (prediction) processing.
41    *
42    * @param doPrediction if true, prediction making shall be switched on,
43    *                    if false, switched off.
44    * 
45    * @return 0 on success; a value greater than 0 refers to an error
46    */
47   virtual UInt_t makePrediction(Bool_t doPrediction = true);
48
49   /**
50    * Virtual function, implemented in the detector specific 
51    * PredictionProcessors to initialize them.
52    *
53    * @param run run number
54    * @param startTime start time of data
55    * @param endTime end time of data
56    */
57   virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
58
59   /**
60    * Function called by the Pendolino for each participating subdetector
61    * producing the required condition settings. This includes the 
62    * encoding of a prediction to the values due to the fact, that only 
63    * data up to now can be fetched from DCS (the latest data can also be 
64    * up to 2 min old until it is received on HLT side). To write the data
65    * to the HCDB, the detector specific implementation of this class has 
66    * to call the appropriated storing function provided by the interface.
67    *
68    * @param dcsAliasMap the map containing aliases and corresponding DCS
69    *                    values and timestamps
70    *
71    * @return 0 on success; a value greater than 0 refers to an error
72    */
73   virtual UInt_t Process(TMap* dcsAliasMap);
74
75   /**
76    * Indicates if DCS data shall be processed.
77    * NOTE: should always return true, since it is used as prediction 
78    * processor, which will only process DCS data
79    *
80    * @return true if DCS data can be processed, else false. Note: if false
81    *                            the Pendolino would stop, so make sure that it is true.
82    */
83   virtual Bool_t ProcessDCS();
84
85   /**
86    * Function to let the PredictionProcessor produce dummy input data,
87    * that can be used in Pendolino tests, where no DCS Archieve DB is
88    * contacted. This function is called by the Pendolino, the result is
89    * given back to the PredictionProcessor via the Process(...) call.
90    * Since the DCSMaps requested from DCS are detector specific, the
91    * PredictionProcessor should know, how the maps look like, that it
92    * expects.
93    * NOTE: The clean - up (delete) of the TMap will be performed by the
94    * Pendolino after the usage. The PredictionProcessor has never to
95    * call delete on the returned TMap pointer.
96    *
97    * @param aliasName optional parameter, that can be given in order to
98    *          create a DCSMap for dedicated aliases. For a general test
99    *          this paramter should be empty. If more than one alias name
100    *          shall be specified, they are separated by blanks " ".
101    *
102    * @return DCSMap containing dummy data for testing the Pendolino.
103    */
104   virtual TMap* produceTestData(TString aliasName = "");
105
106
107 protected:
108
109 private:
110   /**
111    * Disabled Copy constructor 
112    * (parent class is disabled so derived class does the same)
113    */
114   AliHLTPredictionProcessorGRP(const AliHLTPredictionProcessorGRP& predictPro);
115
116   /**
117    * Disabled Assignment operator
118    * (parent class is disabled so derived class does the same)
119    */
120   AliHLTPredictionProcessorGRP& operator=(const AliHLTPredictionProcessorGRP& rhs);
121                 
122   ClassDef(AliHLTPredictionProcessorGRP, 1);
123         
124 };
125
126
127 inline Bool_t AliHLTPredictionProcessorGRP::ProcessDCS() {
128         // indicates if DCS values are processed; always true
129         return true;
130 }
131
132 #endif
133
134