additional RecPoints implemented
[u/mrichter/AliRoot.git] / START / AliSTARTParameters.h
1 #ifndef ALISTARTPARAMETERS_H
2 #define ALISTARTPARAMETERS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice                               
9  */
10
11 //____________________________________________________________________
12 //
13 //  Singleton class to handle various parameters of the
14 //  START - T0
15 //  Should get data fromm Conditions DB.
16 //
17 # include <TNamed.h>
18 # include <TF1.h>
19 # include <TGraph.h>
20 #include <TObjArray.h>
21 class AliSTARTCalibData;
22 class AliSTARTAlignData;
23 class AliCDBEntry;
24
25 class AliSTARTParameters : public TNamed
26 {
27 public:
28   static AliSTARTParameters* Instance();
29
30   void Init();  
31   // Set various `Fixed' parameters 
32   void SetPh2Mip(Int_t r=500)          { fPh2Mip = r; }
33   void SetmV2Mip(Int_t r=50)          { fmV2Mip = r; }
34   void SetChannelWidth(Int_t s=25)   { fChannelWidth = s;}
35   void SetmV2channel(Int_t size=320) { fmV2Channel = size; }
36   void SetQTmin(Int_t qt=13) {fQTmin = qt;}
37   void SetQTmax(Int_t qt=125) {fQTmax = qt;}
38   void SetGain(Int_t size=50) { fFixedGain = size; }
39   void SetZposition( Float_t valueC=69.7, Float_t valueA=373) {
40     fSTARTzPosition[0]=valueC, fSTARTzPosition[1]=valueA;}
41   void SetPMTeff(Int_t ipmt);  
42
43   // Set various variable parameter defaults
44   void SetTimeDelayCablesCFD(Int_t ipmt,Float_t r=150)   
45   { fTimeDelayCablesCFD[ipmt] = r;}
46   void SetTimeDelayCablesLED(Int_t ipmt,Float_t r=150)    
47   { fTimeDelayCablesLED[ipmt] = r;}
48   void SetTimeDelayPMT(Int_t ipmt,Float_t r=5)    
49   { fTimeDelayPMT[ipmt] = r;}
50   void SetTimeDelayElectronicCFD(Int_t ipmt,Float_t r=8)    
51   { fTimeDelayElectronicCFD[ipmt] = r;}
52   void SetTimeDelayElectronicLED(Int_t ipmt,Float_t r=10)  
53   { fTimeDelayElectronicLED[ipmt] = r;}
54   void SetVariableDelayLine(Int_t ipmt, Int_t v=0)  
55   { fVariableDelayLine[ipmt] = v;}
56   void SetSlewingLED(Int_t ipmt); 
57  
58
59   // Get `Fixed' various parameters
60   Int_t GetPh2Mip()          const { return fPh2Mip; }
61   Int_t GetmV2Mip()          const { return fmV2Mip; }
62   Int_t GetChannelWidth()     const { return fChannelWidth; }
63   Int_t GetmV2channel()     const { return fmV2Channel; }
64   Int_t GetQTmin() const {return fQTmin;}
65   Int_t GetQTmax() const {return fQTmax;}
66   Float_t  GetGain(Int_t ipmt)        const;
67   Float_t GetZposition(Int_t i) const {return fSTARTzPosition[i];}
68   TGraph *  GetPMTeff(Int_t ipmt) const  
69   {return (TGraph*)fPMTeff.At(ipmt);}
70   Float_t GetpmtEFF(Int_t ipmt, Float_t lambda) const
71   {return((TGraph*)fPMTeff.At(ipmt))->Eval(lambda);} 
72
73   Float_t  GetTimeDelayCablesCFD(Int_t ipmt) const 
74   {return fTimeDelayCablesCFD[ipmt]; } 
75   Float_t  GetTimeDelayCablesLED(Int_t ipmt) const 
76   {return fTimeDelayCablesLED[ipmt]; } ; 
77
78   Float_t  GetTimeDelayElectronicLED(Int_t ipmt) const 
79   {return fTimeDelayElectronicLED[ipmt]; } ; 
80   Float_t  GetTimeDelayElectronicCFD(Int_t ipmt) const 
81   {return fTimeDelayElectronicCFD[ipmt]; } ; 
82   Int_t GetVariableDelayLine(Int_t ipmt) const 
83   {return fVariableDelayLine[ipmt];}
84
85   Float_t GetSlewingLED(Int_t ipmt, Float_t mv) const
86   {return((TGraph*)fSlewingLED.At(ipmt))->Eval(mv);} 
87    TGraph *  GetSlew(Int_t ipmt) const  
88   {return (TGraph*)fSlewingLED.At(ipmt);}
89
90   Float_t GetTimeDelayCFD(Int_t ipmt);
91   Float_t GetTimeDelayLED(Int_t ipmt);
92
93 protected:
94   AliSTARTParameters();
95   virtual ~AliSTARTParameters() {}
96   static AliSTARTParameters* fgInstance; // Static singleton instance
97   
98   Bool_t fIsInit;               
99   Float_t  fSTARTzPosition[2] ;  // z-position of the two STARTs
100   Int_t   fPh2Mip;            // # photoelectrons per MIP in radiator
101   Int_t   fmV2Mip;            // # mV per MIP in radiator
102   Int_t        fChannelWidth;          // channel width in ns   
103   Int_t        fmV2Channel;     // ADC mv  2  channel # (200000ps/(25*25).
104   Int_t fQTmin;                 //min  time for QTC
105   Int_t fQTmax;                 //max  time fro QTC 
106   Int_t         fFixedGain;       //
107   Float_t fTimeDelayCablesCFD[24];       //! time delay in cables
108   Float_t fTimeDelayCablesLED[24];       //! time delay in cables
109   Float_t fTimeDelayElectronicCFD[24];       //! time delay in electronic
110   Float_t fTimeDelayElectronicLED[24];       //! time delay in electronic
111   Float_t fTimeDelayPMT[24];       //! time delay in PMT
112   Int_t fVariableDelayLine[24];      //time delay in VDL for trigger equvalizing
113   TObjArray fSlewingLED;  //array of slewing correction for each PMT
114   TObjArray fPMTeff; //array PMT registration efficiency
115   
116   Float_t fTimeDelayLED;  //  sum time delay for LED channel
117   Float_t fTimeDelayCFD;  // sum time delay for CFD channel
118   
119   static AliSTARTAlignData * fgAlignData; // singleton for Calibration data
120   static AliSTARTCalibData * fgCalibData; // singleton for Calibration data
121
122   AliCDBEntry*   fAlignentry ;  //pointer to START align object
123   AliCDBEntry*   fCalibentry ;  // pointer to START calibration object
124
125   ClassDef(AliSTARTParameters,1)
126 };
127
128 #endif
129 //____________________________________________________________________
130