Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliGRPPreprocessor.h
CommitLineData
3dedb44a 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
e7a6790f 11// Modified: Ernesto.Lopez.Torres@cern.ch CEADEN-CERN
3dedb44a 12//-------------------------------------------------------------------------
13
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// AliGRPPreprocessor //
19// //
20// Implementation of the GRP preprocessor //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "AliPreprocessor.h"
25
17984b61 26class TList;
27class TString;
c5340e82 28class TObjArray;
17984b61 29class AliDCSSensorArray;
44e45fac 30class AliGRPObject;
31class AliSplineFit;
8c1f1006 32class AliLHCClockPhase;
17984b61 33
3dedb44a 34class AliGRPPreprocessor: public AliPreprocessor {
35 public:
44e45fac 36
0254e751 37 enum DP {kL3Polarity = 0, kDipolePolarity,
44e45fac 38 kL3Current, kDipoleCurrent,
39e3007b 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,
ce996d13 49 kCavernTemperature, kCavernAtmosPressure, kSurfaceAtmosPressure,
50 kCavernAtmosPressure2};
44e45fac 51
39e3007b 52 enum DPHallProbes {
4bb7c769 53 khpL3bsf17H1=0, khpL3bsf17H2, khpL3bsf17H3, khpL3bsf17Temperature,
39e3007b 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};
44e45fac 63
e7a6790f 64 AliGRPPreprocessor(AliShuttleInterface* shuttle);
65 virtual ~AliGRPPreprocessor();
3dedb44a 66
e7a6790f 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,
03e5ee4f 74 const char *cdbRoot,
75 TString &gdc
e7a6790f 76 );
1e27bb6b 77
3dedb44a 78 protected:
79
e7a6790f 80 virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
3dedb44a 81
e7a6790f 82 virtual UInt_t Process(TMap* valueSet);
17984b61 83
e75e6e01 84 Int_t ProcessDaqLB(AliGRPObject* grpobj);
e7a6790f 85 UInt_t ProcessDaqFxs();
6a150f83 86 UInt_t ProcessSPDMeanVertex();
0254e751 87 UInt_t ProcessLHCData(AliGRPObject* grpobj);
e75e6e01 88 UInt_t ProcessDcsFxs(TString partition="", TString detector="");
44e45fac 89 Int_t ProcessDcsDPs(TMap* valueSet, AliGRPObject* grpobj);
39e3007b 90 Int_t ProcessL3DPs(const TMap* valueSet, AliGRPObject* grpobj);
91 Int_t ProcessDipoleDPs(const TMap* valueSet, AliGRPObject* grpobj);
44e45fac 92 Int_t ProcessEnvDPs(TMap* valueSet, AliGRPObject* grpobj);
39e3007b 93 Int_t ProcessHPDPs(const TMap* valueSet, AliGRPObject* grpobj);
44e45fac 94 // Int_t ProcessDcsDPs(TMap* valueSet, TMap* grpmap);
3ba92a38 95 AliDCSSensorArray* GetPressureMap(TMap *dcsAliasMap);
39e3007b 96 AliSplineFit* GetSplineFit(const TObjArray *array, const TString& stringID);
44e45fac 97 //AliSplineFit* GetSplineFit(TMap* mapDCS, const TString& stringID);
39e3007b 98 TString ProcessChar(const TObjArray *array);
fe726709 99 Char_t ProcessBool(const TObjArray *array, Bool_t &change);
39e3007b 100 Float_t ProcessInt(const TObjArray *array);
101 Float_t ProcessUInt(const TObjArray *array);
102 Float_t* ProcessFloatAll(const TObjArray* array);
fe726709 103 Float_t* ProcessFloatAllMagnet(const TObjArray* array, Int_t indexDP, Bool_t &isZero);
5fbf7677 104 Bool_t GetDAQStartEndTimeOk() const {return fdaqStartEndTimeOk;}
105 void SetDAQStartEndTimeOk(Bool_t daqStartEndTimeOk) {fdaqStartEndTimeOk = daqStartEndTimeOk;}
44e45fac 106
0254e751 107 Double_t CalculateMean(TObjArray* lhcObjArray);
f66d3f72 108 Float_t ProcessEnergy(TObjArray* array, Double_t timeStart);
8c1f1006 109 AliLHCClockPhase* ProcessLHCClockPhase(TObjArray *beam1phase,TObjArray *beam2phase,
17fd2848 110 Double_t timeEnd);
0254e751 111
17984b61 112 private:
e7a6790f 113
e75e6e01 114 static const Int_t fgknDAQLbPar; //! number of DAQ lb parameters for PHYSICS runs
e7a6790f 115 static const Int_t fgknDCSDP; //! number of dcs dps
116 static const char* fgkDCSDataPoints[]; //! names of dcs dps
39e3007b 117 static const char* fgkDCSDataPointsHallProbes[]; //! names of dcs dps for Hall Probes
4bb7c769 118 static const Int_t fgknDCSDPHallProbes; //! number of Hall Probes
982f17c2 119
e7a6790f 120 AliDCSSensorArray* fPressure; //pressure array
17984b61 121
fe726709 122 AliGRPPreprocessor(const AliGRPPreprocessor&); // Not implemented
123 AliGRPPreprocessor& operator=(const AliGRPPreprocessor&); // Not implemented
124
125 Float_t fmaxFloat; // maximum float accepted
126 Float_t fminFloat; // minimum float accepted
127 Double_t fmaxDouble; // maximum double accepted
128 Double_t fminDouble; // minimum double accepted
129 Int_t fmaxInt; // maximum int accepted
130 Int_t fminInt; // minimum int accepted
131 UInt_t fmaxUInt; // maximum uint accepted
132 UInt_t fminUInt; // minimum uint accepted
5fbf7677 133 Bool_t fdaqStartEndTimeOk; // flag to set whether the DAQ_time_start/end fields are set
2972d4eb 134
c5340e82 135 TObjArray* ffailedDPs; //TObjArray of failed DPs names
136
0254e751 137 static const Int_t fgknLHCDP; //! number of lhc dps
138 static const char* fgkLHCDataPoints[]; //! names of lhc dps
4bb7c769 139 static const Int_t fgkDCSDPHallTopShift; //! shift from the top to the Hall Probes from the list of DCS DPs names
9fae6417 140 static const Int_t fgkDCSDPNonWorking; //! Number of non working DCS DPs
0254e751 141
08a446c2 142 ClassDef(AliGRPPreprocessor, 0);
3dedb44a 143};
144
145#endif