Coding conventions
[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 class TMap;\r
16 \r
17 class AliDCSSensor;\r
18 class AliSplineFit;\r
19 class AliLog;\r
20 \r
21 class AliGRPObject : public TObject {\r
22  public:\r
23 \r
24         enum Stats {kMean = 0, kTruncMean = 1, kMedian = 2, kSDMean = 3, kSDMedian = 4};\r
25 \r
26         enum DP_HallProbes { \r
27                  khpL3bsf17H1= 0 , khpL3bsf17H2, khpL3bsf17H3, khpL3bsf17Temperature, \r
28                  khpL3bsf4H1, khpL3bsf4H2, khpL3bsf4H3, khpL3bsf4Temperature, \r
29                  khpL3bkf17H1, khpL3bkf17H2, khpL3bkf17H3, khpL3bkf17Temperature, \r
30                  khpL3bkf4H1, khpL3bkf4H2, khpL3bkf4H3, khpL3bkf4Temperature, \r
31                  khpL3bsf13H1, khpL3bsf13H2, khpL3bsf13H3, khpL3bsf13Temperature,\r
32                  khpL3bsf8H1, khpL3bsf8H2, khpL3bsf8H3, khpL3bsfy8Temperature,\r
33                  khpL3bkf13H1, khpL3bkf13H2, khpL3bkf13H3, khpL3bkf13Temperature,\r
34                  khpL3bkf8H1, khpL3bkf8H2, khpL3bkf8H3, khpL3bkf8Temperature,\r
35                  khpDipoleInsideH1, khpDipoleInsideH2, khpDipoleInsideH3, khpDipoleInsideTemperature,\r
36                  khpDipoleOutsideH1, khpDipoleOutsideH2, khpDipoleOutsideH3, khpDipoleOutsideTemperature};\r
37 \r
38 \r
39         AliGRPObject();\r
40         AliGRPObject(const AliGRPObject & obj);\r
41         AliGRPObject& operator=(const AliGRPObject & obj);\r
42         ~AliGRPObject();\r
43 \r
44         // getters\r
45 \r
46         time_t    GetTimeStart() const {return fTimeStart;}\r
47         time_t    GetTimeEnd() const {return fTimeEnd;}\r
48         Float_t   GetBeamEnergy() const {return fBeamEnergy;}\r
49         TString   GetBeamType() const {return fBeamType;}\r
50         Char_t    GetNumberOfDetectors() const {return fNumberOfDetectors;}\r
51         UInt_t     GetDetectorMask() const {return fDetectorMask;}\r
52         TString   GetLHCPeriod() const {return fLHCPeriod;}\r
53         TString   GetRunType() const {return fRunType;}\r
54         TString   GetLHCState() const {return fLHCState;}\r
55         Float_t*  GetLHCLuminosity() const {return fLHCLuminosity;}\r
56         Float_t   GetLHCLuminosity(Stats stat) const {return fLHCLuminosity[stat];}\r
57         AliSplineFit*  GetLHCLuminositySplineFit() const {return fLHCLuminositySplineFit;}\r
58         Float_t*  GetBeamIntensity() const {return fBeamIntensity;}\r
59         Float_t   GetBeamIntensity(Stats stat) const {return fBeamIntensity[stat];}\r
60         AliSplineFit*  GetBeamIntensitySplineFit() const {return fBeamIntensitySplineFit;}\r
61         Char_t    GetL3Polarity() const {return fL3Polarity;}\r
62         Char_t    GetDipolePolarity() const {return fDipolePolarity;}\r
63         Float_t*  GetL3Current() const {return fL3Current;}\r
64         Float_t   GetL3Current(Stats stat) const {return fL3Current[stat];}\r
65         Float_t*  GetDipoleCurrent() const {return fDipoleCurrent;}\r
66         Float_t   GetDipoleCurrent(Stats stat) const {return fDipoleCurrent[stat];}\r
67         Float_t*  GetCavernTemperature() const {return fCavernTemperature;}\r
68         Float_t   GetCavernTemperature(Stats stat) const {return fCavernTemperature[stat];}\r
69         //      Float_t*  GetCavernAtmosPressure() {return fCavernAtmosPressure;}\r
70         //Float_t   GetCavernAtmosPressure(Stats stat) const {return fCavernAtmosPressure[stat];}\r
71         AliDCSSensor*   GetCavernAtmosPressure() const {return fCavernAtmosPressure;}\r
72         AliDCSSensor*   GetSurfaceAtmosPressure() const {return fSurfaceAtmosPressure;}\r
73 \r
74         Float_t* GetHallProbes(DP_HallProbes hp) const;\r
75         Float_t   GetHallProbes(Int_t hp) const {return fHallProbes[hp];}\r
76         Float_t   GetHallProbes(DP_HallProbes hp, Stats stat) const {return fHallProbes[hp*fPoints+stat];}\r
77 \r
78         Int_t    GetPoints() const {return fPoints;}\r
79         Int_t    GetDimension() const {return fDimension;}\r
80 \r
81         // setters\r
82 \r
83         void SetTimeStart(time_t timeStart)  {fTimeStart = timeStart;}\r
84         void SetTimeEnd(time_t timeEnd)  {fTimeEnd = timeEnd;}\r
85         void SetBeamEnergy(Float_t beamEnergy)  {fBeamEnergy = beamEnergy;}\r
86         void SetBeamType(TString beamType)  {fBeamType = beamType;}\r
87         void SetNumberOfDetectors(Char_t numberOfDetectors)  {fNumberOfDetectors = numberOfDetectors;}\r
88         void SetDetectorMask(UInt_t detectorMask)  {fDetectorMask = detectorMask;}\r
89         void SetLHCPeriod(TString lhcPeriod)  {fLHCPeriod = lhcPeriod;}\r
90         void SetRunType(TString runType)  {fRunType = runType;}\r
91         void SetLHCState(TString lhcState)  {fLHCState = lhcState;}\r
92         void SetLHCLuminosity(const Float_t* lhcLuminosity)  {\r
93                 for (Int_t i = 0;i<fPoints;i++) fLHCLuminosity[i] = lhcLuminosity[i];\r
94         }\r
95         void SetLHCLuminosity(Float_t lhcLuminosity, Stats stat)  {fLHCLuminosity[stat] = lhcLuminosity;}\r
96         void SetLHCLuminositySplineFit(AliSplineFit* const lhcLuminositySplineFit)  {fLHCLuminositySplineFit = lhcLuminositySplineFit;}\r
97         void SetBeamIntensity(const Float_t* beamIntensity)  {\r
98                 for (Int_t i = 0;i<fPoints;i++) fBeamIntensity[i] = beamIntensity[i];\r
99         }\r
100         void SetBeamIntensity(Float_t beamIntensity, Stats stat)  {fBeamIntensity[stat] = beamIntensity;}\r
101         void SetBeamIntensitySplineFit(AliSplineFit* const beamIntensitySplineFit)  {fBeamIntensitySplineFit = beamIntensitySplineFit;}\r
102         void SetL3Polarity(Char_t l3Polarity)  {fL3Polarity = l3Polarity;}\r
103         void SetDipolePolarity(Char_t dipolePolarity)  {fDipolePolarity = dipolePolarity;}\r
104         void SetL3Current(const Float_t* l3Current)  {\r
105                 for (Int_t i = 0;i<fPoints;i++) fL3Current[i] = l3Current[i];\r
106         }\r
107         void SetL3Current(Float_t l3Current, Stats stat)  {fL3Current[stat] = l3Current;}\r
108         void SetDipoleCurrent(const Float_t* dipoleCurrent) {\r
109                 for (Int_t i = 0;i<fPoints;i++) fDipoleCurrent[i] = dipoleCurrent[i];\r
110         }\r
111         void SetDipoleCurrent(Float_t dipoleCurrent, Stats stat)  {fDipoleCurrent[stat] = dipoleCurrent;}\r
112         void SetCavernTemperature(const Float_t* cavernTemperature)  {\r
113                 for (Int_t i = 0;i<fPoints;i++) fCavernTemperature[i] = cavernTemperature[i];\r
114         }\r
115         void SetCavernTemperature(Float_t cavernTemperature, Stats stat)  {fCavernTemperature[stat] = cavernTemperature;}\r
116         //      void SetCavernAtmosPressure(Float_t* cavernAtmosPressure)  {\r
117         //              for (Int_t i = 0;i<fPoints;i++) fCavernAtmosPressure[i] = cavernAtmosPressure[i];\r
118         //}\r
119 //      void SetCavernAtmosPressure(Float_t cavernAtmosPressure, Stats stat)  {fCavernAtmosPressure[stat] = cavernAtmosPressure;}\r
120         void SetCavernAtmosPressure(AliDCSSensor* const cavernAtmosPressure)  {fCavernAtmosPressure = cavernAtmosPressure;}\r
121         void SetSurfaceAtmosPressure(AliDCSSensor* const surfacePressure)  {fSurfaceAtmosPressure = surfacePressure;}\r
122 \r
123         void SetHallProbes(DP_HallProbes hp, Float_t hall_probe, Stats stat)  {fHallProbes[hp*fPoints+stat] = hall_probe;}\r
124         void SetHallProbes(const Float_t* hall_probe){\r
125                 for (Int_t i = 0; i< fDimension; i++) fHallProbes[i] =  hall_probe[i];}\r
126 \r
127         void SetHallProbes(DP_HallProbes hp, const Float_t* hall_probe);  \r
128         void SetPoints(Int_t points) {fPoints = points;}\r
129         void SetDimension(Int_t dimension) {fDimension = dimension;}\r
130 \r
131         // getters for "invalid" flags\r
132 \r
133         static Float_t GetInvalidFloat() {return fgkInvalidFloat;}\r
134         static TString GetInvalidString() {return fgkInvalidString;}\r
135         static Int_t GetInvalidInt() {return fgkInvalidInt;}\r
136         static Int_t GetInvalidUInt() {return fgkInvalidUInt;}\r
137         static Char_t GetInvalidChar() {return fgkInvalidChar;}\r
138         static Int_t GetNumberOfHP() {return fgknDCSDPHallProbes;}\r
139         static const char* GetHPDP(Int_t indexHP) {return fgkDCSDataPointsHallProbes[indexHP];}\r
140 \r
141         // to read old GRP object in TMap format\r
142 \r
143         void ReadValuesFromMap(const TMap* map);        \r
144 \r
145  private:\r
146 \r
147         static const Float_t fgkInvalidFloat;   // value to identify invalid data - float\r
148         static const TString fgkInvalidString;  // value to identify invalid data - string\r
149         static const Char_t fgkInvalidChar;     // value to identify invalid data - char\r
150         static const Int_t fgkInvalidInt;       // value to identify invalid data - int\r
151         static const Int_t fgkInvalidUInt;       // value to identify invalid data - uint\r
152         static const Int_t   fgknDCSDPHallProbes;               //! number of dcs dps\r
153         static const char*   fgkDCSDataPointsHallProbes[];      //! names of dcs dps\r
154 \r
155         Int_t fPoints;                    // number of statistical quantities to be stored\r
156         Int_t fDimension;                 // dimension of Hall Probes array\r
157 \r
158         time_t   fTimeStart;              // DAQ_time_start entry from DAQ logbook\r
159         time_t   fTimeEnd;                // DAQ_time_end entry from DAQ logbook\r
160         Float_t  fBeamEnergy;             // beamEnergy entry from DAQ logbook\r
161         TString  fBeamType;               // beamType entry from DAQ logbook\r
162         Char_t   fNumberOfDetectors;      // numberOfDetectors entry from DAQ logbook\r
163         UInt_t   fDetectorMask;           // detectorMask entry from DAQ logbook\r
164         TString  fLHCPeriod;              // LHCperiod entry from DAQ logbook \r
165         TString  fRunType;                // RunType entry from DAQ logbook \r
166         TString  fLHCState;               // LHCState entry from DCS DB\r
167         Float_t*  fLHCLuminosity;         // [fPoints]\r
168                                           // LHCLuminosity entry from DCS DB\r
169         AliSplineFit*  fLHCLuminositySplineFit;       // LHCLuminosity SplineFit from DCS DB\r
170         Float_t*  fBeamIntensity   ;      // [fPoints]\r
171                                           // BeamIntensity entry from DCS DB\r
172         AliSplineFit*  fBeamIntensitySplineFit;       // BeamIntensity SplineFit from DCS DB\r
173         Char_t    fL3Polarity;            // L3Polarity entry from DCS DB\r
174         Char_t    fDipolePolarity;        // DipolePolarity entry from DCS DB                                     \r
175         Float_t*  fL3Current;             // [fPoints]\r
176                                           // L3Current entry from DCS DB\r
177         Float_t*  fDipoleCurrent;         // [fPoints]\r
178                                           // DipoleCurrent entry from DCS DB\r
179         Float_t*  fCavernTemperature;     // [fPoints]\r
180                                           // CavernTemperature entry from DCS DB\r
181         //      Float_t*  fCavernAtmosPressure;   // [fPoints]\r
182                                           // CavernAtmosPressure entry from DCS DB\r
183         AliDCSSensor*  fCavernAtmosPressure;    // CavernAtmosPressure entry from DCS DB\r
184         AliDCSSensor*  fSurfaceAtmosPressure;   // SurfaceAtmosPressure entry from DCS DB\r
185 \r
186         // Hall Probes\r
187 \r
188         Float_t* fHallProbes;       //[fDimension] \r
189                                     // array containg the values for the Hall Probes\r
190 \r
191         ClassDef(AliGRPObject,2)\r
192 \r
193 };\r
194 \r
195 #endif\r