Line data Source code
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 "AliCDBEntry.h"
36 : #include "AliCDBManager.h"
37 :
38 : #include <TGraph.h>
39 : #include <TH1F.h>
40 : #include <TMath.h>
41 : #include <Riostream.h>
42 :
43 20 : ClassImp(AliT0Calibrator)
44 :
45 : //____________________________________________________________________
46 2 : AliT0Calibrator::AliT0Calibrator():TNamed(),
47 2 : fChannelWidth(0),
48 2 : fWalk(0),
49 2 : fEqualized(0)
50 :
51 10 : {
52 : //constructor
53 2 : printf(" AliT0Calibrator ::: AliT0RecoParam GetEq() %i\n", fEqualized);
54 2 : AliT0Parameters* param = AliT0Parameters::Instance();
55 2 : param->Init();
56 : //slewing correcion and equalizing channels
57 :
58 2 : fChannelWidth = param->GetChannelWidth() ;
59 : // Double_t *grX ;
60 100 : for (Int_t i=0; i<24; i++){
61 48 : fMaxValue[i]=0;
62 96 : fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i));
63 48 : TGraph* fu = param ->GetWalk(i);
64 : // fWalk.AddAtAndExpand(fu,i);
65 : //TGraph* fu = param ->GetAmpLEDRec(i);
66 48 : fWalk.AddAtAndExpand(fu,i);
67 : }
68 :
69 4 : }
70 : //_____________________________________________________________________________
71 :
72 0 : AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): TNamed(),
73 0 : fChannelWidth(0),
74 0 : fWalk(0),
75 0 : fEqualized(0)
76 :
77 0 : {
78 : //
79 : // AliT0calibartor copy constructor
80 : //
81 :
82 0 : ((AliT0Calibrator &) r).Copy(*this);
83 :
84 0 : }
85 :
86 : //_____________________________________________________________________________
87 : AliT0Calibrator &AliT0Calibrator::operator=(const AliT0Calibrator &r)
88 : {
89 : //
90 : // Assignment operator
91 : //
92 :
93 0 : if (this != &r) ((AliT0Calibrator &) r).Copy(*this);
94 0 : return *this;
95 :
96 : }
97 :
98 :
99 : //____________________________________________________________________
100 :
101 : Int_t AliT0Calibrator::WalkCorrection(Int_t refAmp, Int_t ipmt, Int_t qt, Int_t time)
102 :
103 : {
104 : //
105 : // referemce amplitude for walk correction now read from RecoParam
106 :
107 : Int_t walk=0;
108 : Int_t timeEq=0, timeWalk=0;
109 12 : TGraph *fu1=(TGraph*) fWalk.At(ipmt);
110 12 : if(fu1 && fu1->GetN()>0) {
111 6 : walk = Int_t(fu1->Eval(Double_t(qt)));
112 6 : }
113 :
114 6 : if (fEqualized == 0)
115 6 : timeEq= time - fTimeDelayCFD[ipmt]-walk;
116 : else
117 0 : timeEq = time - walk - refAmp;
118 :
119 : // printf(" ipmt %i time before %i timeWalk %i , walk %i qt %i fTimeDelayCFD[ipmt] %i timeEq %i \n ",
120 : // ipmt, time,timeWalk, walk, qt,fTimeDelayCFD[ipmt], timeEq );
121 18 : AliDebug(2,Form(" fEqualized %i ipmt %i refAmp %i time before %i timeWalk %i , walk %i qt %i timeEq %i, diff %i \n ",
122 : fEqualized, ipmt, refAmp, time,timeWalk, walk, qt, timeEq , fTimeDelayCFD[ipmt]));
123 :
124 6 : return timeEq;
125 : }
126 :
127 :
128 :
|