]> git.uio.no Git - u/mrichter/AliRoot.git/blame - START/AliSTARTParameters.cxx
additional RecPoints implemented
[u/mrichter/AliRoot.git] / START / AliSTARTParameters.cxx
CommitLineData
5ac84465 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id: */
17
18//____________________________________________________________________
19//
20// START - T0.
21//
22// This class is a singleton that handles various parameters of
23// the START detectors.
24// Eventually, this class will use the Conditions DB to get the
25// various parameters, which code can then request from here.
26//
27#include "AliLog.h"
28#include "AliSTARTParameters.h"
29#include "AliSTARTCalibData.h"
30#include "AliSTARTAlignData.h"
31#include <AliCDBManager.h>
32#include <AliCDBEntry.h>
33#include <AliCDBStorage.h>
34#include <Riostream.h>
35
36AliSTARTAlignData* AliSTARTParameters::fgAlignData = 0;
37AliSTARTCalibData* AliSTARTParameters::fgCalibData = 0;
38//====================================================================
39ClassImp(AliSTARTParameters)
40#if 0
41 ; // This is here to keep Emacs for indenting the next line
42#endif
43
44//____________________________________________________________________
45AliSTARTParameters* AliSTARTParameters::fgInstance = 0;
46//____________________________________________________________________
47AliSTARTParameters*
48AliSTARTParameters::Instance()
49{
50 // Get static instance
51 if (!fgInstance) fgInstance = new AliSTARTParameters;
52 return fgInstance;
53}
54
55//____________________________________________________________________
56AliSTARTParameters::AliSTARTParameters()
57 : fIsInit(kFALSE)
58{
59 // Default constructor
60 for (Int_t ipmt=0; ipmt<24; ipmt++)
61 {
62 SetTimeDelayCablesCFD(ipmt);
63 SetTimeDelayCablesLED(ipmt);
64 SetTimeDelayElectronicCFD(ipmt);
65 SetTimeDelayElectronicLED(ipmt);
66 SetTimeDelayPMT(ipmt);
67 SetVariableDelayLine(ipmt);
68 SetSlewingLED(ipmt);
69 SetPh2Mip();
4c7da157 70 SetmV2Mip();
5ac84465 71 SetChannelWidth();
72 SetmV2channel();
73 SetGain();
74 SetQTmin();
75 SetQTmax();
76 SetPMTeff(ipmt);
77 }
78 SetZposition();
79
80}
81
82//__________________________________________________________________
83void
84AliSTARTParameters::Init()
85{
86 // Initialize the parameters manager. We need to get stuff from the
87 // CDB here.
88 // if (fIsInit) return;
89
90 AliCDBManager* cdb = AliCDBManager::Instance();
1f1fdaf8 91 AliCDBStorage *stor = cdb->GetStorage("local://$ALICE_ROOT");
5ac84465 92 fCalibentry = stor->Get("START/Calib/Gain_TimeDelay_Slewing_Walk",1);
93 if (fCalibentry){
94 fgCalibData = (AliSTARTCalibData*)fCalibentry->GetObject();
95 cout<<" got calibdata "<<endl;
96 }
97 fAlignentry = stor-> Get("START/Align/Positions",1);
98 if (fAlignentry){
99 fgAlignData = (AliSTARTAlignData*) fAlignentry->GetObject();
100 cout<<" got align data "<<endl;
101 }
5ac84465 102
103 fIsInit = kTRUE;
104}
105
106
107//__________________________________________________________________
108Float_t
109AliSTARTParameters::GetGain(Int_t ipmt) const
110{
111 // Returns the calibrated gain for each PMT
112 //
113
114 if (!fCalibentry)
115 return fFixedGain;
116
117 return fgCalibData->GetGain(ipmt);
118}
119
120//__________________________________________________________________
121Float_t
122AliSTARTParameters::GetTimeDelayLED(Int_t ipmt)
123{
124 // return time delay for LED channel
125 //
126 if (!fCalibentry) {
127 fTimeDelayLED = fTimeDelayCablesLED[ipmt] + fTimeDelayElectronicLED[ipmt] + fTimeDelayPMT[ipmt];
128 return fTimeDelayLED;
129 }
130 return fgCalibData ->GetTimeDelayLED(ipmt);
131}
132//__________________________________________________________________
133Float_t
134AliSTARTParameters::GetTimeDelayCFD(Int_t ipmt)
135{
136 // return time delay for CFD channel
137 //
138 if (!fCalibentry)
139 {
140 fTimeDelayCFD = fTimeDelayCablesCFD[ipmt] + fTimeDelayElectronicCFD[ipmt] + fTimeDelayPMT[ipmt] + fVariableDelayLine[ipmt];
141 return fTimeDelayCFD;
142 }
143
144 return fgCalibData->GetTimeDelayCFD(ipmt);
145}
146
147//__________________________________________________________________
148
149void
150AliSTARTParameters::SetSlewingLED(Int_t ipmt)
151{
152 // Set Slweing Correction for LED channel
153
154 Float_t mv[23] = {25, 30,40,60, 80,100,150,200,250,300,400,500,600,800,1000,1500, 2000, 3000, 4000, 5500, 6000, 7000,8000};
155 Float_t y[23] = {5044, 4719, 3835, 3224, 2847, 2691,2327, 1937, 1781, 1560, 1456 ,1339, 1163.5, 1027, 819, 650, 520, 370.5, 234, 156, 78, 0};
156
157 TGraph* gr = new TGraph(23,mv,y);
158 fSlewingLED.AddAtAndExpand(gr,ipmt);
159 }
160//__________________________________________________________________
161void
162AliSTARTParameters::SetPMTeff(Int_t ipmt)
163{
164 Float_t lambda[50];
165 Float_t eff[50 ] = {0, 0, 0.23619, 0.202909, 0.177913,
166 0.175667, 0.17856, 0.190769, 0.206667, 0.230286,
167 0.252276, 0.256267,0.26, 0.27125, 0.281818,
168 0.288118, 0.294057,0.296222, 0.301622, 0.290421,
169 0.276615, 0.2666, 0.248, 0.23619, 0.227814,
170 0.219818, 0.206667,0.194087, 0.184681, 0.167917,
171 0.154367, 0.1364, 0.109412, 0.0834615,0.0725283,
172 0.0642963,0.05861, 0.0465, 0.0413333,0.032069,
173 0.0252203,0.02066, 0.016262, 0.012, 0.00590476,
174 0.003875, 0.00190, 0, 0, 0 } ;
175 for (Int_t i=0; i<50; i++) lambda[i]=200+10*i;
176
177 TGraph* gr = new TGraph(50,lambda,eff);
178 fPMTeff.AddAtAndExpand(gr,ipmt);
179}