]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - T0/AliT0Calibrator.cxx
new production request
[u/mrichter/AliRoot.git] / T0 / AliT0Calibrator.cxx
... / ...
CommitLineData
1
2/**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Author: The ALICE Off-line Project. *
6 * Contributors are mentioned in the code where appropriate. *
7 * *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
16
17/* $Id$ */
18/***********************************************************************
19 * this class doing calibration during reconstruction
20 * 2 steps:
21 * - equalizing channels
22 * - applying walk corrections
23 *
24 * Alla.Maevskaya@cern.ch
25 *
26 **********************************************************************/
27
28//#include <Riostream.h>
29
30#include "AliLog.h"
31#include "AliT0Parameters.h"
32#include "AliT0Calibrator.h"
33#include "AliT0Reconstructor.h"
34#include "AliT0RecoParam.h"
35#include <TGraph.h>
36#include <TH1F.h>
37#include <TMath.h>
38#include <Riostream.h>
39
40ClassImp(AliT0Calibrator)
41
42//____________________________________________________________________
43 AliT0Calibrator::AliT0Calibrator():TNamed(),
44 fChannelWidth(0),
45 fWalk(0)
46
47{
48 //constructor
49 AliT0Parameters* param = AliT0Parameters::Instance();
50 param->Init();
51 //slewing correcion and equalizing channels
52
53 fChannelWidth = param->GetChannelWidth() ;
54 // Double_t *grX ;
55 for (Int_t i=0; i<24; i++){
56 fMaxValue[i]=0;
57 fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i));
58 TGraph* fu = param ->GetWalk(i);
59 fWalk.AddAtAndExpand(fu,i);
60
61 }
62
63}
64//_____________________________________________________________________________
65
66AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): TNamed(),
67 fChannelWidth(0),
68 fWalk(0)
69
70{
71 //
72 // AliT0calibartor copy constructor
73 //
74
75 ((AliT0Calibrator &) r).Copy(*this);
76
77}
78
79//_____________________________________________________________________________
80AliT0Calibrator &AliT0Calibrator::operator=(const AliT0Calibrator &r)
81{
82 //
83 // Assignment operator
84 //
85
86 if (this != &r) ((AliT0Calibrator &) r).Copy(*this);
87 return *this;
88
89}
90
91
92//____________________________________________________________________
93
94Int_t AliT0Calibrator::WalkCorrection(Int_t refAmp, Int_t ipmt, Int_t qt, Int_t time)
95
96{
97 //
98 // referemce amplitude for walk correction now read from RecoParam
99
100 Double_t *grY ;
101
102 Int_t walk=0;
103
104 Int_t timeEq=0, timeWalk=0;
105 TGraph *fu1=(TGraph*) fWalk.At(ipmt);
106 if(fu1 && fu1->GetN()>0) {
107 grY = fu1->GetY();
108 fMaxValue[ipmt]=grY[refAmp-1];
109 // TGraph* fu = param ->GetAmpLEDRec(i);
110 walk = Int_t (fMaxValue[ipmt]) + Int_t(fu1->Eval(Double_t(qt)));
111 }
112
113 timeWalk = time + walk ;
114 timeEq= timeWalk - fTimeDelayCFD[ipmt];
115 AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , walk %i qt %i timeEq %i \n ",
116 ipmt, time,timeWalk, walk, qt, timeEq ));
117
118 return timeEq;
119}
120
121
122