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