DCS DP with correct getters
[u/mrichter/AliRoot.git] / T0 / AliT0DataDCS.h
1 #ifndef AliT0DataDCS_H
2 #define AliT0DataDCS_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 #include <TMap.h>
8 #include <TClonesArray.h>
9 #include <TGraph.h>
10
11 // AliT0DataDCS class
12 // fetching T0 data points from DCS, calculating mean values for the run
13 // and storing the result to Reference DB
14
15 class AliT0DataDCS : public TObject {
16 public:
17         enum {kNAliases=201, kHV=12, kLV=2, kCFD=12, kScalers=32, kTRM=20, kDRM=5, kAtten=1}; // 201 T0 aliases
18
19         AliT0DataDCS();
20         AliT0DataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery);
21         AliT0DataDCS(const AliT0DataDCS & data);
22         AliT0DataDCS& operator=(const AliT0DataDCS & data);
23         ~AliT0DataDCS();
24
25         void SetRun(Int_t run) {fRun = run;}
26         void SetStartTime(Int_t startTime) {fStartTime = startTime;}
27         void SetEndTime(Int_t endTime) {fEndTime = endTime;}
28         void SetStartTimeDCSQuery(Int_t startTimeDCSQuery) {fStartTimeDCSQuery = startTimeDCSQuery;}
29         void SetEndTimeDCSQuery(Int_t endTimeDCSQuery) {fEndTimeDCSQuery = endTimeDCSQuery;}
30
31
32         Int_t GetRun() const {return fRun;}
33         Int_t GetStartTime() const {return fStartTime;}
34         Int_t GetEndTime() const {return fEndTime;}
35         Int_t GetStartTimeDCSQuery() const {return fStartTimeDCSQuery;}
36         Int_t GetEndTimeDCSQuery() const {return fEndTimeDCSQuery;}     
37
38         Int_t GetTVDCtop() const {return    fTVDCtop;}     
39         Int_t GetTVDCbottom() const {return fTVDCbottom;} 
40
41         Float_t GetMeanPMTCurrentASide(Int_t pmt)   const {return fHViA[pmt];} 
42         Float_t GetMeanPMTVoltageASide(Int_t pmt)   const {return fHVvA[pmt];} 
43         Float_t GetMeanLVCurrentASide (Int_t index) const {return fLViA[index];} 
44         Float_t GetMeanLVVoltageASide (Int_t index) const {return fLVvA[index];}
45
46         Float_t GetMeanPMTCurrentCSide(Int_t pmt)   const {return fHViC[pmt];} 
47         Float_t GetMeanPMTVoltageCSide(Int_t pmt)   const {return fHVvC[pmt];} 
48         Float_t GetMeanLVCurrentCSide (Int_t index) const {return fLViC[index];} 
49         Float_t GetMeanLVVoltageCSide (Int_t index) const {return fLVvC[index];}
50
51         Float_t GetMeanCFDThresholdASide(Int_t pmt) const{return fCFDtA[pmt];}
52         Float_t GetMeanCFDWalkASide   (Int_t pmt)   const{return fCFDwA[pmt];}  
53         Float_t GetMeanCFDThresholdCSide(Int_t pmt) const{return fCFDtC[pmt];}
54         Float_t GetMeanCFDWalkCSide   (Int_t pmt)   const{return fCFDwC[pmt];}  
55
56         UInt_t GetMeanValueOfT0ScalerFromEntireRun(Int_t scaler) const{return fScalerMean[scaler];}         
57         UInt_t GetMeanValueOfT0ScalerPerSecond    (Int_t scaler) const{return fScalerSecMean[scaler];} 
58
59         Float_t GetMeanTemperatureTRM (Int_t trm)   const {return fTRM[trm];}                   
60         Float_t GetMeanTemperatureDRM (Int_t drm)   const {return fDRM[drm];}   
61         Float_t GetLaserAmplitude() const { return  fAtten;}    
62         Int_t  GetMultDiscriminatorCentralASide() const     {return fMPDcentA;}
63         Int_t  GetMultDiscriminatorCentralCSide() const     {return fMPDcentC;}     
64         Int_t  GetMultDiscriminatorSemiCentralASide() const {return fMPDsemiCentA;}
65         Int_t  GetMultDiscriminatorSemiCentralCSide() const {return fMPDsemiCentC;}          
66         Int_t  GetMultDiscriminatorMode() const {return fMPDmode;}
67
68
69         Bool_t ProcessData(TMap& aliasMap);
70
71         const char* GetAliasName(Int_t pos) const {return pos<kNAliases ? fAliasNames[pos].Data() : 0;}
72
73         void PrintT0Data() const;
74 private:
75         void Init();
76         void Introduce(UInt_t numAlias, const TObjArray* aliasArr)const;
77         void PrintfArray(const char *label, const Float_t *array, Int_t numElements) const;
78
79         Int_t fRun;                             // Run number
80         UInt_t fStartTime;                      // Start time
81         UInt_t fEndTime;                        // End time
82         Int_t fStartTimeDCSQuery;               // Begin time DCSQuery
83         Int_t fEndTimeDCSQuery;                 // End time DCSQuery
84         Float_t fHViA[kHV];                     // Mean value of HV current in uA on A-side
85         Float_t fHVvA[kHV];                     // Mean value of HV voltage in V on A-side
86         Float_t fLViA[kLV];                     // Mean value of LV current in uA on A-side
87         Float_t fLVvA[kLV];                     // Mean value of LV voltage in V on A-side
88         Float_t fHViC[kHV];                     // Mean value of HV current in uA on C-side
89         Float_t fHVvC[kHV];                     // Mean value of HV voltage in V on C-side
90         Float_t fLViC[kLV];                     // Mean value of LV current in uA on C-side
91         Float_t fLVvC[kLV];                     // Mean value of LV voltage in V on C-side
92         Float_t fCFDtA[kCFD];                   // Mean threshold on CFD in V on A-side 
93         Float_t fCFDwA[kCFD];                   // Mean walk on CFD in V on A-side
94         Float_t fCFDtC[kCFD];                   // Mean threshold on CFD in V on C-side
95         Float_t fCFDwC[kCFD];                   // Mean walk on CFD in V on C-side
96         UInt_t fScalerMean[kScalers];   // Mean value of T0 scaler counts from the entire run
97         UInt_t fScalerSecMean[kScalers];        // Mean value of T0 scaler counts per second
98         Float_t fTRM[kTRM];                     // Mean temperature on TRM in degrees of Celsius
99         Float_t fDRM[kDRM];                     // Mean temperature on DRM in degrees of Celsius
100         Float_t fAtten;                         // Laser amplitude in MIPs
101         Int_t fMPDcentA;                        // Multiplicity Discriminator central on A-side
102         Int_t fMPDcentC;                        // Multiplicity Discriminator central on C-side
103         Int_t fMPDsemiCentA;                    // Multiplicity Discriminator semi-central on A-side
104         Int_t fMPDsemiCentC;                    // Multiplicity Discriminator semi-central on C-side
105         Int_t fTVDCtop;                         // T0 Vertex Unit top
106         Int_t fTVDCbottom;                      // T0 Vertex Unit bottom
107         Int_t fMPDmode;                       // Multiplicity Discriminator on C-side only, A-side only, or both sides
108         TString fAliasNames[kNAliases];         // T0 data points aliases  
109         Bool_t fIsProcessed;                    // status - was processing data successful
110         ClassDef(AliT0DataDCS, 2)
111
112 protected:
113 };
114
115 #endif