13efef848f44065dbfefd9a8bd3d2dd2529ea609
[u/mrichter/AliRoot.git] / ITS / AliITSDCSAnalyzerSDD.h
1 #ifndef ALIITSDCSANALYZERSDD_H
2 #define ALIITSDCSANALYZERSDD_H
3
4 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 ///////////////////////////////////////////////////////////////////
10 // Class for SDD dcs data analysis                               //
11 //  called by AliITSPreprocessorSDD                              //
12 // Origin: F.Prino, Torino, prino@to.infn.it                     //
13 //         V.Pospisil, CTU Prague, gdermog@seznam.cz             //
14 ///////////////////////////////////////////////////////////////////
15
16 #include <TMap.h>
17 #include <TObjArray.h>
18 #include "AliITSDCSDataSDD.h"
19 #include "AliITSgeomTGeo.h"
20
21 class AliITSDCSAnalyzerSDD : public TObject 
22 {
23
24  public:
25   AliITSDCSAnalyzerSDD();
26   ~AliITSDCSAnalyzerSDD();
27
28
29   void SetVoltageDelays( Int_t HVDelay, Int_t MVDelay )     { fHVDelay = HVDelay; fMVDelay = MVDelay; }
30   void SetTemperatureDelays( Int_t TLDelay, Int_t TRDelay ) { fTLDelay = TLDelay; fTRDelay = TRDelay; }
31   void SetStatusDelays( Int_t StTLDelay, Int_t StTRDelay, Int_t OKDelay ) 
32                                                             { fStTLDelay = StTLDelay; fStTRDelay = StTRDelay; fOKDelay = OKDelay; }
33                         // There is some delay between variable readout and setting up the time stamp. Delays differs
34                         //  in voltage and temperature readouts. So it is necessary to substract some value from time stamps
35                         //  during the data processing 
36
37   void AnalyzeData( TMap* dcsMap );
38                         // Processes the data
39
40   void PrintDCSDPNames( FILE *output = stdout );
41                         // Prints module identifications in text mode
42
43   AliITSDCSDataSDD* GetDCSData( Int_t iModule ) const { return fDCSData[iModule]; }
44                         // Returns data for module specified by its index in range 0..259
45
46   AliITSDCSDataSDD* GetDCSData( Int_t iLayer, Int_t iLadder, Int_t iModule ) const
47                                   { return fDCSData[AliITSgeomTGeo::GetModuleIndex( iLayer, iLadder, iModule ) - 240]; }
48                         // Returns data for module specified by layer[3..4], ladder[1..22] and module number[1..8]
49
50  protected:
51   AliITSDCSAnalyzerSDD(const AliITSDCSAnalyzerSDD& /* dcsa  */);
52   AliITSDCSAnalyzerSDD& operator=(const AliITSDCSAnalyzerSDD& /* dcsa */);
53                         // Copy constructor and assignment operator not allowed.
54                         // They are protected to avoid misuse
55
56   void Init();          // Creates module text identifications
57
58  private:
59
60   enum { kNmodules=260,
61          kNladders3=14,
62          kNladders4=22,
63          kNmodLad3=6,
64          kNmodLad4=8 };            // Basic SDD geometry
65
66   TString fHVDPNames[kNmodules];   // DCS DP names for High Voltage  
67   TString fMVDPNames[kNmodules];   // DCS DP names for Medium Voltage
68   TString fOKDPNames[kNmodules];   // DCS DP names for Medium Voltage
69   TString fTLDPNames[kNmodules];   // DCS DP names for Temperature Left
70   TString fTRDPNames[kNmodules];   // DCS DP names for Temperature Right
71   TString fTLStDPNames[kNmodules]; // DCS DP names for status of Temperature Left
72   TString fTRStDPNames[kNmodules]; // DCS DP names for status of Temperature Right
73   AliITSDCSDataSDD *fDCSData[kNmodules];  // values of DCS data points
74
75   Int_t fHVDelay;     // There is some delay between variable readout
76   Int_t fMVDelay;     // and setting up the time stamp. Delays differs
77   Int_t fTLDelay;     // in voltage and temperature readouts. So it is
78   Int_t fTRDelay;     // necessary to substract some value from time stamp
79   Int_t fStTLDelay;   // during the data processing. 
80   Int_t fStTRDelay;   // Here are the values of delays stored
81   Int_t fOKDelay;     // for the 7 variables.
82
83   ClassDef(AliITSDCSAnalyzerSDD, 2);
84
85 }; /*class AliITSDCSAnalyzerSDD*/
86
87 #endif