1 #ifndef ALIGRPOBJECT_H
\r
2 #define ALIGRPOBJECT_H
\r
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
\r
5 * See cxx source for full Copyright notice */
\r
11 // class to store the information
\r
12 // coming from the GRP preprocessor
\r
16 #include <TString.h>
\r
24 class AliGRPObject : public TObject {
\r
27 enum Stats {kMean = 0, kTruncMean = 1, kMedian = 2, kSDMean = 3, kSDMedian = 4};
\r
29 enum StatusBits {kPolConvLHC = BIT(14), kUniformBMap = BIT(15),kConvSqrtSHalfGeV = BIT(16)};
\r
31 enum DP_HallProbes {
\r
32 khpL3bsf17H1= 0 , khpL3bsf17H2, khpL3bsf17H3, khpL3bsf17Temperature,
\r
33 khpL3bsf4H1, khpL3bsf4H2, khpL3bsf4H3, khpL3bsf4Temperature,
\r
34 khpL3bkf17H1, khpL3bkf17H2, khpL3bkf17H3, khpL3bkf17Temperature,
\r
35 khpL3bkf4H1, khpL3bkf4H2, khpL3bkf4H3, khpL3bkf4Temperature,
\r
36 khpL3bsf13H1, khpL3bsf13H2, khpL3bsf13H3, khpL3bsf13Temperature,
\r
37 khpL3bsf8H1, khpL3bsf8H2, khpL3bsf8H3, khpL3bsfy8Temperature,
\r
38 khpL3bkf13H1, khpL3bkf13H2, khpL3bkf13H3, khpL3bkf13Temperature,
\r
39 khpL3bkf8H1, khpL3bkf8H2, khpL3bkf8H3, khpL3bkf8Temperature,
\r
40 khpDipoleInsideH1, khpDipoleInsideH2, khpDipoleInsideH3, khpDipoleInsideTemperature,
\r
41 khpDipoleOutsideH1, khpDipoleOutsideH2, khpDipoleOutsideH3, khpDipoleOutsideTemperature};
\r
45 AliGRPObject(const AliGRPObject & obj);
\r
46 AliGRPObject& operator=(const AliGRPObject & obj);
\r
50 Bool_t IsBeamEnergyIsSqrtSHalfGeV() const {return TestBit(kConvSqrtSHalfGeV);}
\r
51 Bool_t IsPolarityConventionLHC() const {return TestBit(kPolConvLHC);}
\r
52 Bool_t IsUniformBMap() const {return TestBit(kUniformBMap);}
\r
53 time_t GetTimeStart() const {return fTimeStart;}
\r
54 time_t GetTimeEnd() const {return fTimeEnd;}
\r
55 Float_t GetBeamEnergy() const {return IsBeamEnergyIsSqrtSHalfGeV() ? fBeamEnergy : fBeamEnergy/2;}
\r
56 TString GetBeamType() const {return fBeamType;}
\r
57 Char_t GetNumberOfDetectors() const {return fNumberOfDetectors;}
\r
58 UInt_t GetDetectorMask() const {return fDetectorMask;}
\r
59 TString GetLHCPeriod() const {return fLHCPeriod;}
\r
60 TString GetRunType() const {return fRunType;}
\r
61 TString GetLHCState() const {return fLHCState;}
\r
62 Float_t* GetLHCLuminosity() const {return fLHCLuminosity;}
\r
63 Float_t GetLHCLuminosity(Stats stat) const {return fLHCLuminosity[stat];}
\r
64 AliSplineFit* GetLHCLuminositySplineFit() const {return fLHCLuminositySplineFit;}
\r
65 Float_t* GetBeamIntensity() const {return fBeamIntensity;}
\r
66 Float_t GetBeamIntensity(Stats stat) const {return fBeamIntensity[stat];}
\r
67 AliSplineFit* GetBeamIntensitySplineFit() const {return fBeamIntensitySplineFit;}
\r
68 Char_t GetL3Polarity() const {return fL3Polarity;}
\r
69 Char_t GetDipolePolarity() const {return fDipolePolarity;}
\r
70 Float_t* GetL3Current() const {return fL3Current;}
\r
71 Float_t GetL3Current(Stats stat) const {return fL3Current[stat];}
\r
72 Float_t* GetDipoleCurrent() const {return fDipoleCurrent;}
\r
73 Float_t GetDipoleCurrent(Stats stat) const {return fDipoleCurrent[stat];}
\r
74 Float_t* GetCavernTemperature() const {return fCavernTemperature;}
\r
75 Float_t GetCavernTemperature(Stats stat) const {return fCavernTemperature[stat];}
\r
76 AliDCSSensor* GetCavernAtmosPressure() const {return fCavernAtmosPressure;}
\r
77 AliDCSSensor* GetCavernAtmosPressure2() const {return fCavernAtmosPressure2;}
\r
78 AliDCSSensor* GetSurfaceAtmosPressure() const {return fSurfaceAtmosPressure;}
\r
80 Float_t* GetHallProbesArray(DP_HallProbes hp) const;
\r
81 Float_t GetHallProbes(Int_t hp) const {return fHallProbes[hp];}
\r
82 Float_t GetHallProbes(DP_HallProbes hp, Stats stat) const {return fHallProbes[hp*fPoints+stat];}
\r
84 Int_t GetPoints() const {return fPoints;}
\r
85 Int_t GetDimension() const {return fDimension;}
\r
88 void SetBeamEnergyIsSqrtSHalfGeV(Bool_t v=kTRUE) {SetBit(kConvSqrtSHalfGeV,v);}
\r
89 void SetPolarityConventionLHC(Bool_t v=kTRUE) {return SetBit(kPolConvLHC,v);}
\r
90 void SetUniformBMap(Bool_t v=kTRUE) {return SetBit(kUniformBMap,v);}
\r
91 void SetTimeStart(time_t timeStart) {fTimeStart = timeStart;}
\r
92 void SetTimeEnd(time_t timeEnd) {fTimeEnd = timeEnd;}
\r
93 void SetBeamEnergy(Float_t beamEnergy) {fBeamEnergy = beamEnergy;}
\r
94 void SetBeamType(TString beamType) {fBeamType = beamType;}
\r
95 void SetNumberOfDetectors(Char_t numberOfDetectors) {fNumberOfDetectors = numberOfDetectors;}
\r
96 void SetDetectorMask(UInt_t detectorMask) {fDetectorMask = detectorMask;}
\r
97 void SetLHCPeriod(TString lhcPeriod) {fLHCPeriod = lhcPeriod;}
\r
98 void SetRunType(TString runType) {fRunType = runType;}
\r
99 void SetLHCState(TString lhcState) {fLHCState = lhcState;}
\r
100 void SetLHCLuminosity(const Float_t* lhcLuminosity) {
\r
101 for (Int_t i = 0;i<fPoints;i++) fLHCLuminosity[i] = lhcLuminosity[i];
\r
103 void SetLHCLuminosity(Float_t lhcLuminosity, Stats stat) {fLHCLuminosity[stat] = lhcLuminosity;}
\r
104 void SetLHCLuminositySplineFit(AliSplineFit* const lhcLuminositySplineFit) {fLHCLuminositySplineFit = lhcLuminositySplineFit;}
\r
105 void SetBeamIntensity(const Float_t* beamIntensity) {
\r
106 for (Int_t i = 0;i<fPoints;i++) fBeamIntensity[i] = beamIntensity[i];
\r
108 void SetBeamIntensity(Float_t beamIntensity, Stats stat) {fBeamIntensity[stat] = beamIntensity;}
\r
109 void SetBeamIntensitySplineFit(AliSplineFit* const beamIntensitySplineFit) {fBeamIntensitySplineFit = beamIntensitySplineFit;}
\r
110 void SetL3Polarity(Char_t l3Polarity) {fL3Polarity = l3Polarity;}
\r
111 void SetDipolePolarity(Char_t dipolePolarity) {fDipolePolarity = dipolePolarity;}
\r
112 void SetL3Current(const Float_t* l3Current) {
\r
113 for (Int_t i = 0;i<fPoints;i++) fL3Current[i] = l3Current[i];
\r
115 void SetL3Current(Float_t l3Current, Stats stat) {fL3Current[stat] = l3Current;}
\r
116 void SetDipoleCurrent(const Float_t* dipoleCurrent) {
\r
117 for (Int_t i = 0;i<fPoints;i++) fDipoleCurrent[i] = dipoleCurrent[i];
\r
119 void SetDipoleCurrent(Float_t dipoleCurrent, Stats stat) {fDipoleCurrent[stat] = dipoleCurrent;}
\r
120 void SetCavernTemperature(const Float_t* cavernTemperature) {
\r
121 for (Int_t i = 0;i<fPoints;i++) fCavernTemperature[i] = cavernTemperature[i];
\r
123 void SetCavernTemperature(Float_t cavernTemperature, Stats stat) {fCavernTemperature[stat] = cavernTemperature;}
\r
124 void SetCavernAtmosPressure(AliDCSSensor* const cavernAtmosPressure) {fCavernAtmosPressure = cavernAtmosPressure;}
\r
125 void SetCavernAtmosPressure2(AliDCSSensor* const cavernAtmosPressure) {fCavernAtmosPressure2 = cavernAtmosPressure;}
\r
126 void SetSurfaceAtmosPressure(AliDCSSensor* const surfacePressure) {fSurfaceAtmosPressure = surfacePressure;}
\r
128 void SetHallProbes(DP_HallProbes hp, Float_t hall_probe, Stats stat) {fHallProbes[hp*fPoints+stat] = hall_probe;}
\r
129 void SetHallProbes(const Float_t* hall_probe){
\r
130 for (Int_t i = 0; i< fDimension; i++) fHallProbes[i] = hall_probe[i];}
\r
132 void SetHallProbes(DP_HallProbes hp, const Float_t* hall_probe);
\r
133 void SetPoints(Int_t points) {fPoints = points;}
\r
134 void SetDimension(Int_t dimension) {fDimension = dimension;}
\r
136 // getters for "invalid" flags
\r
138 static Float_t GetInvalidFloat() {return fgkInvalidFloat;}
\r
139 static TString GetInvalidString() {return fgkInvalidString;}
\r
140 static Int_t GetInvalidInt() {return fgkInvalidInt;}
\r
141 static Int_t GetInvalidUInt() {return fgkInvalidUInt;}
\r
142 static Char_t GetInvalidChar() {return fgkInvalidChar;}
\r
143 static Int_t GetNumberOfHP() {return fgknDCSDPHallProbes;}
\r
144 static const char* GetHPDP(Int_t indexHP) {return fgkDCSDataPointsHallProbes[indexHP];}
\r
146 // to read old GRP object in TMap format
\r
148 void ReadValuesFromMap(const TMap* map);
\r
152 static const Float_t fgkInvalidFloat; // value to identify invalid data - float
\r
153 static const TString fgkInvalidString; // value to identify invalid data - string
\r
154 static const Char_t fgkInvalidChar; // value to identify invalid data - char
\r
155 static const Int_t fgkInvalidInt; // value to identify invalid data - int
\r
156 static const Int_t fgkInvalidUInt; // value to identify invalid data - uint
\r
157 static const Int_t fgknDCSDPHallProbes; //! number of dcs dps
\r
158 static const char* fgkDCSDataPointsHallProbes[]; //! names of dcs dps
\r
160 Int_t fPoints; // number of statistical quantities to be stored
\r
161 Int_t fDimension; // dimension of Hall Probes array
\r
163 time_t fTimeStart; // DAQ_time_start entry from DAQ logbook
\r
164 time_t fTimeEnd; // DAQ_time_end entry from DAQ logbook
\r
165 Float_t fBeamEnergy; // beamEnergy entry from DAQ logbook
\r
166 TString fBeamType; // beamType entry from DAQ logbook
\r
167 Char_t fNumberOfDetectors; // numberOfDetectors entry from DAQ logbook
\r
168 UInt_t fDetectorMask; // detectorMask entry from DAQ logbook
\r
169 TString fLHCPeriod; // LHCperiod entry from DAQ logbook
\r
170 TString fRunType; // RunType entry from DAQ logbook
\r
171 TString fLHCState; // LHCState entry from DCS DB
\r
172 Float_t* fLHCLuminosity; // [fPoints]
\r
173 // LHCLuminosity entry from DCS DB
\r
174 AliSplineFit* fLHCLuminositySplineFit; // LHCLuminosity SplineFit from DCS DB
\r
175 Float_t* fBeamIntensity ; // [fPoints]
\r
176 // BeamIntensity entry from DCS DB
\r
177 AliSplineFit* fBeamIntensitySplineFit; // BeamIntensity SplineFit from DCS DB
\r
178 Char_t fL3Polarity; // L3Polarity entry from DCS DB
\r
179 Char_t fDipolePolarity; // DipolePolarity entry from DCS DB
\r
180 Float_t* fL3Current; // [fPoints]
\r
181 // L3Current entry from DCS DB
\r
182 Float_t* fDipoleCurrent; // [fPoints]
\r
183 // DipoleCurrent entry from DCS DB
\r
184 Float_t* fCavernTemperature; // [fPoints]
\r
185 // CavernTemperature entry from DCS DB
\r
186 AliDCSSensor* fCavernAtmosPressure; // CavernAtmosPressure entry from DCS DB
\r
187 AliDCSSensor* fCavernAtmosPressure2; // CavernAtmosPressure2 entry from DCS DB
\r
188 AliDCSSensor* fSurfaceAtmosPressure; // SurfaceAtmosPressure entry from DCS DB
\r
192 Float_t* fHallProbes; //[fDimension]
\r
193 // array containg the values for the Hall Probes
\r
195 ClassDef(AliGRPObject,3)
\r