X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0Calibrator.cxx;h=8a8cbef3888efdd0aec1cf577ad4ec3df3be29f7;hb=17fd2848ebce9292da187407540f34c2e1dcf047;hp=084adf17b2826083f80c01e0d7716f1abe477ddf;hpb=74adb36ac5e440cac4f65bea860f54598ef17d55;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0Calibrator.cxx b/T0/AliT0Calibrator.cxx index 084adf17b28..8a8cbef3888 100644 --- a/T0/AliT0Calibrator.cxx +++ b/T0/AliT0Calibrator.cxx @@ -1,3 +1,4 @@ + /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * @@ -14,40 +15,57 @@ **************************************************************************/ /* $Id$ */ - -#include +/*********************************************************************** + * this class doing calibration during reconstruction + * 2 steps: + * - equalizing channels + * - applying walk corrections + * + * Alla.Maevskaya@cern.ch + * + **********************************************************************/ + +//#include #include "AliLog.h" #include "AliT0Parameters.h" #include "AliT0Calibrator.h" -#include +#include "AliT0Reconstructor.h" +#include "AliT0RecoParam.h" #include #include +#include +#include ClassImp(AliT0Calibrator) //____________________________________________________________________ - AliT0Calibrator::AliT0Calibrator(): - fChannelWidth(0), - fWalk(0) + AliT0Calibrator::AliT0Calibrator():TNamed(), + fChannelWidth(0), + fWalk(0) + { - AliT0Parameters* param = AliT0Parameters::Instance(); - param->Init(); - + //constructor + AliT0Parameters* param = AliT0Parameters::Instance(); + param->Init(); + //slewing correcion and equalizing channels + fChannelWidth = param->GetChannelWidth() ; - + // Double_t *grX ; for (Int_t i=0; i<24; i++){ + fMaxValue[i]=0; fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i)); - TGraph* fu = param ->GetWalk(i); + TGraph* fu = param ->GetWalk(i); + // fWalk.AddAtAndExpand(fu,i); + //TGraph* fu = param ->GetAmpLEDRec(i); fWalk.AddAtAndExpand(fu,i); - + } - // } //_____________________________________________________________________________ -AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): +AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): TNamed(), fChannelWidth(0), fWalk(0) @@ -73,23 +91,36 @@ AliT0Calibrator &AliT0Calibrator::operator=(const AliT0Calibrator &r) } - //____________________________________________________________________ -Int_t AliT0Calibrator::WalkCorrection(Int_t ipmt, Int_t qt, Int_t time) + +Int_t AliT0Calibrator::WalkCorrection(Int_t refAmp, Int_t ipmt, Int_t qt, Int_t time) + { - //slewing correcion and equalizing channels + // + // referemce amplitude for walk correction now read from RecoParam + + Double_t *grY ; + + Int_t walk=0; Int_t timeEq=0, timeWalk=0; TGraph *fu1=(TGraph*) fWalk.At(ipmt); - Float_t walk=fu1->Eval(Float_t(qt)); - TH1F*hr=fu1->GetHistogram(); - Float_t maxValue=hr->GetMaximum(50); - timeWalk = time + Int_t(maxValue-walk)/fChannelWidth ; + if(fu1 && fu1->GetN()>0) { + grY = fu1->GetY(); + fMaxValue[ipmt]=grY[refAmp-1]; + // TGraph* fu = param ->GetAmpLEDRec(i); + // walk = Int_t (fMaxValue[ipmt]) + Int_t(fu1->Eval(Double_t(qt))); + walk = Int_t(fu1->Eval(Double_t(qt))); + } + + timeWalk = time - walk ; + timeEq= timeWalk - fTimeDelayCFD[ipmt]; + // printf(" ipmt %i time before %i timeWalk %i , walk %i qt %i fTimeDelayCFD[ipmt] %i timeEq %i \n ", + // ipmt, time,timeWalk, walk, qt,fTimeDelayCFD[ipmt], timeEq ); + AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , walk %i qt %i timeEq %i \n ", + ipmt, time,timeWalk, walk, qt, timeEq )); - timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]); - AliDebug(2,Form(" time before %i timeWalk %i , qt %i timeEq %i \n ", - time,timeWalk, qt, timeEq )); - return timeEq; + return timeEq; }