]>
Commit | Line | Data |
---|---|---|
5ac84465 | 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 | |
7ad3cb84 | 32 | void SetPh2Mip(Int_t r=300) { fPh2Mip = r; } |
4c7da157 | 33 | void SetmV2Mip(Int_t r=50) { fmV2Mip = r; } |
5ac84465 | 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;} | |
7bdc4686 | 38 | void SetGain(Int_t size=1) { fFixedGain = size; } |
5ac84465 | 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 | ||
7bdc4686 | 43 | void SetTimeDelayTVD(Float_t r=150) { fTimeDelayTVD = r; }; |
44 | Float_t GetTimeDelayTVD() { return fTimeDelayTVD; } | |
45 | ||
5ac84465 | 46 | // Set various variable parameter defaults |
47 | void SetTimeDelayCablesCFD(Int_t ipmt,Float_t r=150) | |
48 | { fTimeDelayCablesCFD[ipmt] = r;} | |
49 | void SetTimeDelayCablesLED(Int_t ipmt,Float_t r=150) | |
50 | { fTimeDelayCablesLED[ipmt] = r;} | |
51 | void SetTimeDelayPMT(Int_t ipmt,Float_t r=5) | |
52 | { fTimeDelayPMT[ipmt] = r;} | |
53 | void SetTimeDelayElectronicCFD(Int_t ipmt,Float_t r=8) | |
54 | { fTimeDelayElectronicCFD[ipmt] = r;} | |
55 | void SetTimeDelayElectronicLED(Int_t ipmt,Float_t r=10) | |
56 | { fTimeDelayElectronicLED[ipmt] = r;} | |
57 | void SetVariableDelayLine(Int_t ipmt, Int_t v=0) | |
58 | { fVariableDelayLine[ipmt] = v;} | |
59 | void SetSlewingLED(Int_t ipmt); | |
7bdc4686 | 60 | void SetSlewingRec(Int_t ipmt); |
5ac84465 | 61 | |
62 | ||
63 | // Get `Fixed' various parameters | |
64 | Int_t GetPh2Mip() const { return fPh2Mip; } | |
4c7da157 | 65 | Int_t GetmV2Mip() const { return fmV2Mip; } |
5ac84465 | 66 | Int_t GetChannelWidth() const { return fChannelWidth; } |
67 | Int_t GetmV2channel() const { return fmV2Channel; } | |
68 | Int_t GetQTmin() const {return fQTmin;} | |
69 | Int_t GetQTmax() const {return fQTmax;} | |
70 | Float_t GetGain(Int_t ipmt) const; | |
71 | Float_t GetZposition(Int_t i) const {return fSTARTzPosition[i];} | |
72 | TGraph * GetPMTeff(Int_t ipmt) const | |
73 | {return (TGraph*)fPMTeff.At(ipmt);} | |
74 | Float_t GetpmtEFF(Int_t ipmt, Float_t lambda) const | |
75 | {return((TGraph*)fPMTeff.At(ipmt))->Eval(lambda);} | |
76 | ||
77 | Float_t GetTimeDelayCablesCFD(Int_t ipmt) const | |
78 | {return fTimeDelayCablesCFD[ipmt]; } | |
79 | Float_t GetTimeDelayCablesLED(Int_t ipmt) const | |
80 | {return fTimeDelayCablesLED[ipmt]; } ; | |
81 | ||
82 | Float_t GetTimeDelayElectronicLED(Int_t ipmt) const | |
83 | {return fTimeDelayElectronicLED[ipmt]; } ; | |
84 | Float_t GetTimeDelayElectronicCFD(Int_t ipmt) const | |
85 | {return fTimeDelayElectronicCFD[ipmt]; } ; | |
86 | Int_t GetVariableDelayLine(Int_t ipmt) const | |
87 | {return fVariableDelayLine[ipmt];} | |
88 | ||
7bdc4686 | 89 | Float_t GetSlewingLED(Int_t ipmt, Float_t mv) const; |
90 | // {return((TGraph*)fSlewingLED.At(ipmt))->Eval(mv);} | |
91 | TGraph * GetSlew(Int_t ipmt) const ; | |
92 | // {return (TGraph*)fSlewingLED.At(ipmt);} | |
93 | TGraph * GetSlewRec(Int_t ipmt) const; | |
94 | // {return (TGraph*)fSlewingRec.At(ipmt);} | |
95 | Float_t GetSlewingRec(Int_t ipmt, Float_t mv) const; | |
96 | // {return((TGraph*)fSlewingRec.At(ipmt))->Eval(mv);} | |
5ac84465 | 97 | |
98 | Float_t GetTimeDelayCFD(Int_t ipmt); | |
99 | Float_t GetTimeDelayLED(Int_t ipmt); | |
100 | ||
101 | protected: | |
102 | AliSTARTParameters(); | |
103 | virtual ~AliSTARTParameters() {} | |
104 | static AliSTARTParameters* fgInstance; // Static singleton instance | |
105 | ||
7bdc4686 | 106 | Bool_t fIsInit; // Whether we've been initialised |
5ac84465 | 107 | Float_t fSTARTzPosition[2] ; // z-position of the two STARTs |
108 | Int_t fPh2Mip; // # photoelectrons per MIP in radiator | |
4c7da157 | 109 | Int_t fmV2Mip; // # mV per MIP in radiator |
5ac84465 | 110 | Int_t fChannelWidth; // channel width in ns |
111 | Int_t fmV2Channel; // ADC mv 2 channel # (200000ps/(25*25). | |
112 | Int_t fQTmin; //min time for QTC | |
113 | Int_t fQTmax; //max time fro QTC | |
114 | Int_t fFixedGain; // | |
115 | Float_t fTimeDelayCablesCFD[24]; //! time delay in cables | |
116 | Float_t fTimeDelayCablesLED[24]; //! time delay in cables | |
117 | Float_t fTimeDelayElectronicCFD[24]; //! time delay in electronic | |
118 | Float_t fTimeDelayElectronicLED[24]; //! time delay in electronic | |
119 | Float_t fTimeDelayPMT[24]; //! time delay in PMT | |
120 | Int_t fVariableDelayLine[24]; //time delay in VDL for trigger equvalizing | |
121 | TObjArray fSlewingLED; //array of slewing correction for each PMT | |
7bdc4686 | 122 | TObjArray fSlewingRec; //array of slewing correction for Reconstruction |
5ac84465 | 123 | TObjArray fPMTeff; //array PMT registration efficiency |
124 | ||
125 | Float_t fTimeDelayLED; // sum time delay for LED channel | |
126 | Float_t fTimeDelayCFD; // sum time delay for CFD channel | |
7bdc4686 | 127 | Float_t fTimeDelayTVD; //time delay for TVD (vertex trigger channel) |
5ac84465 | 128 | |
129 | static AliSTARTAlignData * fgAlignData; // singleton for Calibration data | |
130 | static AliSTARTCalibData * fgCalibData; // singleton for Calibration data | |
131 | ||
132 | AliCDBEntry* fAlignentry ; //pointer to START align object | |
133 | AliCDBEntry* fCalibentry ; // pointer to START calibration object | |
134 | ||
135 | ClassDef(AliSTARTParameters,1) | |
136 | }; | |
137 | ||
138 | #endif | |
139 | //____________________________________________________________________ | |
140 |