Setting of aliases to rawReader done only once. Base decision on cosmic or calib...
[u/mrichter/AliRoot.git] / STEER / STEER / AliGRPPreprocessor.h
1 #ifndef ALIGRPPREPROCESSOR_H
2 #define ALIGRPPREPROCESSOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 //                          Class AliGRPPreprocessor
8 //                  Global Run Parameters (GRP) preprocessor
9 //
10 //    Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
11 //    Modified: Ernesto.Lopez.Torres@cern.ch  CEADEN-CERN
12 //-------------------------------------------------------------------------
13
14
15
16 //////////////////////////////////////////////////////////////////////////
17 //                                                                      //
18 //                        AliGRPPreprocessor                            //
19 //                                                                      //
20 //           Implementation of the GRP preprocessor                     //
21 //                                                                      //
22 //////////////////////////////////////////////////////////////////////////
23
24 #include "AliPreprocessor.h"
25
26 class TList;
27 class TString;
28 class TObjArray;
29 class AliDCSSensorArray;
30 class AliGRPObject;
31 class AliSplineFit;
32 class AliLHCClockPhase;
33
34 class AliGRPPreprocessor: public AliPreprocessor {
35  public:
36
37         enum DP {kL3Polarity = 0, kDipolePolarity,  
38                  kL3Current, kDipoleCurrent, 
39                  kL3bsf17H1, kL3bsf17H2, kL3bsf17H3, kL3bsf17Temperature, 
40                  kL3bsf4H1, kL3bsf4H2, kL3bsf4H3, kL3bsf4Temperature, 
41                  kL3bkf17H1, kL3bkf17H2, kL3bkf17H3, kL3bkf17Temperature, 
42                  kL3bkf4H1, kL3bkf4H2, kL3bkf4H3, kL3bkf4Temperature, 
43                  kL3bsf13H1, kL3bsf13H2, kL3bsf13H3, kL3bsf13Temperature,
44                  kL3bsf8H1, kL3bsf8H2, kL3bsf8H3, kL3bsf8Temperature,
45                  kL3bkf13H1, kL3bkf13H2, kL3bkf13H3, kL3bkf13Temperature,
46                  kL3bkf8H1, kL3bkf8H2, kL3bkf8H3, kL3bkf8Temperature,
47                  kDipoleInsideH1, kDipoleInsideH2, kDipoleInsideH3, kDipoleInsideTemperature,
48                  kDipoleOutsideH1, kDipoleOutsideH2, kDipoleOutsideH3, kDipoleOutsideTemperature,
49                  kCavernTemperature, kCavernAtmosPressure, kSurfaceAtmosPressure, 
50                  kCavernAtmosPressure2};
51
52         enum DPHallProbes { 
53                  khpL3bsf17H1=0, khpL3bsf17H2, khpL3bsf17H3, khpL3bsf17Temperature, 
54                  khpL3bsf4H1, khpL3bsf4H2, khpL3bsf4H3, khpL3bsf4Temperature, 
55                  khpL3bkf17H1, khpL3bkf17H2, khpL3bkf17H3, khpL3bkf17Temperature, 
56                  khpL3bkf4H1, khpL3bkf4H2, khpL3bkf4H3, khpL3bkf4Temperature, 
57                  khpL3bsf13H1, khpL3bsf13H2, khpL3bsf13H3, khpL3bsf13Temperature,
58                  khpL3bsf8H1, khpL3bsf8H2, khpL3bsf8H3, khpL3bsf8Temperature,
59                  khpL3bkf13H1, khpL3bkf13H2, khpL3bkf13H3, khpL3bkf13Temperature,
60                  khpL3bkf8H1, khpL3bkf8H2, khpL3bkf8H3, khpL3bkf8Temperature,
61                  khpDipoleInsideH1, khpDipoleInsideH2, khpDipoleInsideH3, khpDipoleInsideTemperature,
62                  khpDipoleOutsideH1, khpDipoleOutsideH2, khpDipoleOutsideH3, khpDipoleOutsideTemperature};
63
64                       AliGRPPreprocessor(AliShuttleInterface* shuttle);
65   virtual            ~AliGRPPreprocessor();
66   
67   static      Int_t   ReceivePromptRecoParameters(
68                                   UInt_t run,
69                                   const char* dbHost,
70                                   Int_t dbPort,
71                                   const char* dbName,
72                                   const char* user,
73                                   const char* password,
74                                   const char *cdbRoot,
75                                   TString &gdc
76                                  );
77   static   THashList*  ProcessAliases(const char* aliasesFile);
78
79  protected:
80
81   virtual      void   Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
82   
83   virtual     UInt_t   Process(TMap* valueSet);
84
85                Int_t   ProcessDaqLB(AliGRPObject* grpobj);
86               UInt_t   ProcessDaqFxs();
87               UInt_t   ProcessDqmFxs();
88               UInt_t   ProcessSPDMeanVertex();
89               UInt_t   ProcessLHCData(AliGRPObject* grpobj);
90               UInt_t   ProcessDcsFxs(TString partition="", TString detector="");
91                Int_t   ProcessDcsDPs(TMap* valueSet, AliGRPObject* grpobj);
92                Int_t   ProcessL3DPs(const TMap* valueSet, AliGRPObject* grpobj);
93                Int_t   ProcessDipoleDPs(const TMap* valueSet, AliGRPObject* grpobj);
94                Int_t   ProcessEnvDPs(TMap* valueSet, AliGRPObject* grpobj);
95                Int_t   ProcessHPDPs(const TMap* valueSet, AliGRPObject* grpobj);
96                //               Int_t   ProcessDcsDPs(TMap* valueSet, TMap* grpmap);
97    AliDCSSensorArray*  GetPressureMap(TMap *dcsAliasMap);
98    AliSplineFit* GetSplineFit(const TObjArray *array, const TString& stringID);
99    //AliSplineFit* GetSplineFit(TMap* mapDCS, const TString& stringID);
100    TString ProcessChar(const TObjArray *array);
101    Char_t ProcessBool(const TObjArray *array, Bool_t &change);
102    Float_t ProcessInt(const TObjArray *array);
103    Float_t ProcessUInt(const TObjArray *array);
104    Float_t* ProcessFloatAll(const TObjArray* array);
105    Float_t* ProcessFloatAllMagnet(const TObjArray* array, Int_t indexDP, Bool_t &isZero);
106    Bool_t GetDAQStartEndTimeOk() const {return fdaqStartEndTimeOk;}
107    void SetDAQStartEndTimeOk(Bool_t daqStartEndTimeOk) {fdaqStartEndTimeOk = daqStartEndTimeOk;}
108
109    Float_t ProcessEnergy(TObjArray* array, Double_t timeStart);
110    AliLHCClockPhase* ProcessLHCClockPhase(TObjArray *beam1phase,TObjArray *beam2phase,
111                                           Double_t timeEnd);
112    TString ParseBeamTypeString(TString beamType, Int_t iBeamType);
113    Bool_t CheckFileRecords (const char* fileName) const;
114    
115  private:
116  
117   static const Int_t   fgknDAQLbPar;            //! number of DAQ lb parameters for PHYSICS runs
118   static const Int_t   fgknDCSDP;               //! number of dcs dps
119   static const char*   fgkDCSDataPoints[];      //! names of dcs dps
120   static const char*   fgkDCSDataPointsHallProbes[];      //! names of dcs dps for Hall Probes
121   static const Int_t   fgknDCSDPHallProbes;           //! number of Hall Probes
122
123   AliDCSSensorArray*   fPressure; //pressure array
124
125   AliGRPPreprocessor(const AliGRPPreprocessor&); // Not implemented
126   AliGRPPreprocessor& operator=(const AliGRPPreprocessor&); // Not implemented
127
128   Float_t fmaxFloat; // maximum float accepted
129   Float_t fminFloat; // minimum float accepted
130   Double_t fmaxDouble; // maximum double accepted
131   Double_t fminDouble; // minimum double accepted
132   Int_t fmaxInt; // maximum int accepted
133   Int_t fminInt; // minimum int accepted
134   UInt_t fmaxUInt; // maximum uint accepted
135   UInt_t fminUInt; // minimum uint accepted
136   Bool_t fdaqStartEndTimeOk; // flag to set whether the DAQ_time_start/end fields are set
137
138   TObjArray* ffailedDPs; //TObjArray of failed DPs names
139
140   static const Int_t   fgknLHCDP;               //! number of lhc dps
141   static const char*   fgkLHCDataPoints[];      //! names of lhc dps
142   static const Int_t   fgkDCSDPHallTopShift;    //! shift from the top to the Hall Probes from the list of DCS DPs names
143   static const Int_t   fgkDCSDPNonWorking;    //! Number of non working DCS DPs 
144
145   ClassDef(AliGRPPreprocessor, 0);
146 };
147
148 #endif