end-of-line normalization
[u/mrichter/AliRoot.git] / STEER / STEER / AliGRPObject.h
CommitLineData
a65a7e70 1#ifndef ALIGRPOBJECT_H
2#define ALIGRPOBJECT_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/* $Id$ */
8
9//
10// AliGRPObject
11// class to store the information
12// coming from the GRP preprocessor
13//
14
15#include <time.h>
16#include <TString.h>
17#include <TTimeStamp.h>
18#include <TArrayD.h>
19
20class TMap;
21
22class AliDCSSensor;
23class AliSplineFit;
24class AliLog;
25
26class AliGRPObject : public TObject {
27 public:
28
29 enum Stats {kMean = 0, kTruncMean = 1, kMedian = 2, kSDMean = 3, kSDMedian = 4};
30
31 enum StatusBits {kPolConvLHC = BIT(14), kUniformBMap = BIT(15),kConvSqrtSHalfGeV = BIT(16)};
32
33 enum DP_HallProbes {
34 khpL3bsf17H1= 0 , khpL3bsf17H2, khpL3bsf17H3, khpL3bsf17Temperature,
35 khpL3bsf4H1, khpL3bsf4H2, khpL3bsf4H3, khpL3bsf4Temperature,
36 khpL3bkf17H1, khpL3bkf17H2, khpL3bkf17H3, khpL3bkf17Temperature,
37 khpL3bkf4H1, khpL3bkf4H2, khpL3bkf4H3, khpL3bkf4Temperature,
38 khpL3bsf13H1, khpL3bsf13H2, khpL3bsf13H3, khpL3bsf13Temperature,
39 khpL3bsf8H1, khpL3bsf8H2, khpL3bsf8H3, khpL3bsfy8Temperature,
40 khpL3bkf13H1, khpL3bkf13H2, khpL3bkf13H3, khpL3bkf13Temperature,
41 khpL3bkf8H1, khpL3bkf8H2, khpL3bkf8H3, khpL3bkf8Temperature,
42 khpDipoleInsideH1, khpDipoleInsideH2, khpDipoleInsideH3, khpDipoleInsideTemperature,
43 khpDipoleOutsideH1, khpDipoleOutsideH2, khpDipoleOutsideH3, khpDipoleOutsideTemperature};
44
45
46 AliGRPObject();
47 AliGRPObject(const AliGRPObject & obj);
48 AliGRPObject& operator=(const AliGRPObject & obj);
49 ~AliGRPObject();
50
51 // getters
52 Bool_t IsBeamEnergyIsSqrtSHalfGeV() const {return TestBit(kConvSqrtSHalfGeV);}
53 Bool_t IsPolarityConventionLHC() const {return TestBit(kPolConvLHC);}
54 Bool_t IsUniformBMap() const {return TestBit(kUniformBMap);}
55 time_t GetTimeStart() const {return fTimeStart;}
56 time_t GetTimeEnd() const {return fTimeEnd;}
57 Float_t GetBeamEnergy() const;
58 TString GetBeamType() const {return fBeamType;}
59 Char_t GetNumberOfDetectors() const {return fNumberOfDetectors;}
60 UInt_t GetDetectorMask() const {return fDetectorMask;}
61 TString GetLHCPeriod() const {return fLHCPeriod;}
62 TString GetRunType() const {return fRunType;}
63 TString GetLHCState() const {return fLHCState;}
64 TString GetMachineMode() const {return fMachineMode;}
65 TObjArray* GetLHCStateArray() const {return fLHCStateArray;}
66 TObjArray* GetMachineModeArray() const {return fMachineModeArray;}
67 Char_t GetL3Polarity() const {return fL3Polarity;}
68 Char_t GetDipolePolarity() const {return fDipolePolarity;}
69 Float_t* GetL3Current() const {return fL3Current;}
70 Float_t GetL3Current(Stats stat) const {return fL3Current[stat];}
71 Float_t* GetDipoleCurrent() const {return fDipoleCurrent;}
72 Float_t GetDipoleCurrent(Stats stat) const {return fDipoleCurrent[stat];}
73 Float_t* GetCavernTemperature() const {return fCavernTemperature;}
74 Float_t GetCavernTemperature(Stats stat) const {return fCavernTemperature[stat];}
75 AliDCSSensor* GetCavernAtmosPressure() const {return fCavernAtmosPressure;}
76 AliDCSSensor* GetCavernAtmosPressure2() const {return fCavernAtmosPressure2;}
77 AliDCSSensor* GetSurfaceAtmosPressure() const {return fSurfaceAtmosPressure;}
78 AliDCSSensor* GetBestCavernAtmosPressure() const ;
79 AliDCSSensor* GetBestCavernAtmosPressure(const TTimeStamp& time) const;
80 static AliDCSSensor* GetBestCavernAtmosPressure(AliDCSSensor* cavern1,
81 AliDCSSensor* cavern2, AliDCSSensor* surface, const TTimeStamp& time);
82
83
84 Float_t* GetHallProbesArray(DP_HallProbes hp) const;
85 Float_t GetHallProbes(Int_t hp) const {return fHallProbes[hp];}
86 Float_t GetHallProbes(DP_HallProbes hp, Stats stat) const {return fHallProbes[hp*fPoints+stat];}
87
88 Int_t GetPoints() const {return fPoints;}
89 Int_t GetDimension() const {return fDimension;}
90
91 Double_t GetMaxTimeLHCValidity() const {return fMaxTimeLHCValidity;}
92 //
93 TObjArray* GetQATrigClasses() const {return (TObjArray*)fQATrigClasses;}
94 TObjArray* GetQACloningRequest() const {return (TObjArray*)fQACloningRequest;}
95 //
96 // setters
97 void SetBeamEnergyIsSqrtSHalfGeV(Bool_t v=kTRUE) {SetBit(kConvSqrtSHalfGeV,v);}
98 void SetPolarityConventionLHC(Bool_t v=kTRUE) {return SetBit(kPolConvLHC,v);}
99 void SetUniformBMap(Bool_t v=kTRUE) {return SetBit(kUniformBMap,v);}
100 void SetTimeStart(time_t timeStart) {fTimeStart = timeStart;}
101 void SetTimeEnd(time_t timeEnd) {fTimeEnd = timeEnd;}
102 void SetBeamEnergy(Float_t beamEnergy) {fBeamEnergy = beamEnergy;}
103 void SetBeamType(TString beamType) {fBeamType = beamType;}
104 void SetNumberOfDetectors(Char_t numberOfDetectors) {fNumberOfDetectors = numberOfDetectors;}
105 void SetDetectorMask(UInt_t detectorMask) {fDetectorMask = detectorMask;}
106 void SetLHCPeriod(TString lhcPeriod) {fLHCPeriod = lhcPeriod;}
107 void SetRunType(TString runType) {fRunType = runType;}
108 void SetLHCState(TString lhcState) {fLHCState = lhcState;}
109 void SetMachineMode(TString machineMode) {fMachineMode = machineMode;}
110 void SetLHCStateArray(TObjArray* lhcStateArray) {fLHCStateArray = lhcStateArray;}
111 void SetMachineModeArray(TObjArray* machineModeArray) {fMachineModeArray = machineModeArray;}
112 void SetL3Polarity(Char_t l3Polarity) {fL3Polarity = l3Polarity;}
113 void SetDipolePolarity(Char_t dipolePolarity) {fDipolePolarity = dipolePolarity;}
114 void SetL3Current(const Float_t* l3Current) {
115 for (Int_t i = 0;i<fPoints;i++) fL3Current[i] = l3Current[i];
116 }
117 void SetL3Current(Float_t l3Current, Stats stat) {fL3Current[stat] = l3Current;}
118 void SetDipoleCurrent(const Float_t* dipoleCurrent) {
119 for (Int_t i = 0;i<fPoints;i++) fDipoleCurrent[i] = dipoleCurrent[i];
120 }
121 void SetDipoleCurrent(Float_t dipoleCurrent, Stats stat) {fDipoleCurrent[stat] = dipoleCurrent;}
122 void SetCavernTemperature(const Float_t* cavernTemperature) {
123 for (Int_t i = 0;i<fPoints;i++) fCavernTemperature[i] = cavernTemperature[i];
124 }
125 void SetCavernTemperature(Float_t cavernTemperature, Stats stat) {fCavernTemperature[stat] = cavernTemperature;}
126 void SetCavernAtmosPressure(AliDCSSensor* const cavernAtmosPressure) {fCavernAtmosPressure = cavernAtmosPressure;}
127 void SetCavernAtmosPressure2(AliDCSSensor* const cavernAtmosPressure) {fCavernAtmosPressure2 = cavernAtmosPressure;}
128 void SetSurfaceAtmosPressure(AliDCSSensor* const surfacePressure) {fSurfaceAtmosPressure = surfacePressure;}
129
130 void SetHallProbes(DP_HallProbes hp, Float_t hall_probe, Stats stat) {fHallProbes[hp*fPoints+stat] = hall_probe;}
131 void SetHallProbes(const Float_t* hall_probe){
132 for (Int_t i = 0; i< fDimension; i++) fHallProbes[i] = hall_probe[i];}
133
134 void SetHallProbes(DP_HallProbes hp, const Float_t* hall_probe);
135 void SetPoints(Int_t points) {fPoints = points;}
136 void SetDimension(Int_t dimension) {fDimension = dimension;}
137 void SetMaxTimeLHCValidity(Double_t maxTimeLHCValidity) {fMaxTimeLHCValidity = maxTimeLHCValidity;}
138 //
139 void SetQATrigClasses(TObjArray* arr) {fQATrigClasses = arr;}
140 void SetQACloningRequest(TObjArray* arr) {fQACloningRequest = arr;}
141 //
142 // getters for "invalid" flags
143
144 static Float_t GetInvalidFloat() {return fgkInvalidFloat;}
145 static TString GetInvalidString() {return fgkInvalidString;}
146 static Int_t GetInvalidInt() {return fgkInvalidInt;}
147 static Int_t GetInvalidUInt() {return fgkInvalidUInt;}
148 static Char_t GetInvalidChar() {return fgkInvalidChar;}
149 static Int_t GetNumberOfHP() {return fgknDCSDPHallProbes;}
150 static const char* GetHPDP(Int_t indexHP) {return fgkDCSDataPointsHallProbes[indexHP];}
151
152 Double_t EvalCavernPressure(const TTimeStamp& time, Bool_t& inside) const;
153 static Double_t EvalCavernPressure(AliDCSSensor* cavern1,
154 AliDCSSensor* cavern2, AliDCSSensor* surface,
155 const TTimeStamp& time, Bool_t& inside);
156
157 // to read old GRP object in TMap format
158
159 void ReadValuesFromMap(const TMap* map);
160
161 void SetSingleBeamType(Int_t ibeamType, TString beamType) {fSeparateBeamType[ibeamType] = beamType;}
162 TString GetSingleBeamType(Int_t ibeamType) const {return fSeparateBeamType[ibeamType];}
163
164 void SetNFalseDataQualityFlag(Int_t nFalses) {fNFalseDataQualityFlag = nFalses;}
165 Int_t GetNFalseDataQualityFlag() const {return fNFalseDataQualityFlag;}
166
167 void SetFalseDataQualityFlagPeriods(Double_t* falses);
168 TArrayD* GetFalseDataQualityFlagPeriods() const {return fFalseDataQualityFlag;}
169
170 Double_t GetStartFalseDataQualityFlag(Int_t iperiod) const;
171 Double_t GetEndFalseDataQualityFlag(Int_t iperiod) const;
172
173 void SetBeamTypeFromLHC(TString beamTypeFromLHC) {fBeamTypeFromLHC = beamTypeFromLHC;}
174 TString GetBeamTypeFromLHC() const {return fBeamTypeFromLHC;}
175
176 private:
177
178 static const Float_t fgkInvalidFloat; // value to identify invalid data - float
179 static const TString fgkInvalidString; // value to identify invalid data - string
180 static const Char_t fgkInvalidChar; // value to identify invalid data - char
181 static const Int_t fgkInvalidInt; // value to identify invalid data - int
182 static const Int_t fgkInvalidUInt; // value to identify invalid data - uint
183 static const Int_t fgknDCSDPHallProbes; //! number of dcs dps
184 static const char* fgkDCSDataPointsHallProbes[]; //! names of dcs dps
185
186 Int_t fPoints; // number of statistical quantities to be stored
187 Int_t fDimension; // dimension of Hall Probes array
188
189 time_t fTimeStart; // DAQ_time_start entry from DAQ logbook
190 time_t fTimeEnd; // DAQ_time_end entry from DAQ logbook
191 Float_t fBeamEnergy; // beamEnergy entry from DAQ logbook
192 TString fBeamType; // beamType entry from DAQ logbook
193 Char_t fNumberOfDetectors; // numberOfDetectors entry from DAQ logbook
194 UInt_t fDetectorMask; // detectorMask entry from DAQ logbook
195 TString fLHCPeriod; // LHCperiod entry from DAQ logbook
196 TString fRunType; // RunType entry from DAQ logbook
197 TString fLHCState; // LHCState entry from DCS DB
198 Char_t fL3Polarity; // L3Polarity entry from DCS DB
199 Char_t fDipolePolarity; // DipolePolarity entry from DCS DB
200 Float_t* fL3Current; // [fPoints]
201 // L3Current entry from DCS DB
202 Float_t* fDipoleCurrent; // [fPoints]
203 // DipoleCurrent entry from DCS DB
204 Float_t* fCavernTemperature; // [fPoints]
205 // CavernTemperature entry from DCS DB
206 AliDCSSensor* fCavernAtmosPressure; // CavernAtmosPressure entry from DCS DB
207 AliDCSSensor* fCavernAtmosPressure2; // CavernAtmosPressure2 entry from DCS DB
208 AliDCSSensor* fSurfaceAtmosPressure; // SurfaceAtmosPressure entry from DCS DB
209
210 // Hall Probes
211
212 Float_t* fHallProbes; //[fDimension]
213 // array containg the values for the Hall Probes
214
215 TString fMachineMode; // Machine Mode from LHC
216 TObjArray* fLHCStateArray; // Array of values for the LHC State
217 TObjArray* fMachineModeArray; // Array of values for the LHC State
218 TObjArray* fQATrigClasses; // RS: Array of trigger class to watch in QA
219 TObjArray* fQACloningRequest; // RS: Array of cloning requests for QA histos
220 Double_t fMaxTimeLHCValidity; // time until which the LHC Data Machine Mode and Beam Mode didn't change
221 TString fSeparateBeamType[2]; // separate beam Types from LHC
222 Int_t fNFalseDataQualityFlag; // number of times the data quality flag turned to FALSE
223 TArrayD* fFalseDataQualityFlag; // array of starts (even positions) and ends (odd poistions) of the periods
224 // when the data quality flag was FALSE
225 TString fBeamTypeFromLHC; // string containing the information about the beam types AS SENT BY LHC (in the form "beam1-beam2")
226
227 ClassDef(AliGRPObject,10)
228
229};
230
231#endif