1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
17 /***********************************************************************
18 * this class doing calibration during reconstruction
20 * - equalizing channels
21 * - applying walk corrections
23 * Alla.Maevskaya@cern.ch
25 **********************************************************************/
27 //#include <Riostream.h>
30 #include "AliT0Parameters.h"
31 #include "AliT0Calibrator.h"
37 ClassImp(AliT0Calibrator)
39 //____________________________________________________________________
40 AliT0Calibrator::AliT0Calibrator():TNamed(),
47 AliT0Parameters* param = AliT0Parameters::Instance();
50 fChannelWidth = param->GetChannelWidth() ;
55 for (Int_t i=0; i<24; i++){
57 fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i));
59 // TGraph* fu = param ->GetWalk(i);
60 TGraph* fu = param ->GetAmpLEDRec(i);
66 TMath::Sort(np, grY, index,down);
67 fMaxValue[i]=Int_t(grY[index[0]]);
68 fWalk.AddAtAndExpand(fu,i);
77 //_____________________________________________________________________________
79 AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): TNamed(),
85 // AliT0calibartor copy constructor
88 ((AliT0Calibrator &) r).Copy(*this);
92 //_____________________________________________________________________________
93 AliT0Calibrator &AliT0Calibrator::operator=(const AliT0Calibrator &r)
96 // Assignment operator
99 if (this != &r) ((AliT0Calibrator &) r).Copy(*this);
106 //____________________________________________________________________
107 Int_t AliT0Calibrator::WalkCorrection(Int_t ipmt, Int_t qt, Int_t time, TString option)
109 //slewing correcion and equalizing channels
113 Int_t timeEq=0, timeWalk=0;
114 // TGraph* fu1 = param ->GetWalk(ipmt);
115 // TGraph* fu1 = param ->GetAmpLEDRec(ipmt);
116 TGraph *fu1=(TGraph*) fWalk.At(ipmt);
117 if(fu1 && fu1->GetN()>0) {
118 walk=Int_t(fu1->Eval(Double_t(qt)));
120 if (option == "pdc") {
121 timeWalk = time + Int_t((fMaxValue[ipmt]-walk)/fChannelWidth) ;
122 timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]);
124 if (option == "cosmic") {
125 timeWalk = time + Int_t((fMaxValue[ipmt]-walk)) ;
126 if(walk <1 ) timeWalk = time ;
127 timeEq= timeWalk - fTimeDelayCFD[ipmt];
128 AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , qt %i timeEq %i \n ",
129 ipmt, time,timeWalk, qt, timeEq ));