X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=T0%2FAliT0Calibrator.cxx;h=be4a7874c8bf8f5da0eb865bfe6582025e9e4a7b;hb=2ba5f106e99855c15130395b906f0f25dc9f09a2;hp=c7018475e0bf99949469752b346644c279690471;hpb=7d95281bbc8b2505d706e0676a981f84cb5d735e;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0Calibrator.cxx b/T0/AliT0Calibrator.cxx index c7018475e0b..be4a7874c8b 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,45 +15,59 @@ **************************************************************************/ /* $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), - fSlewingRec(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* gr = param ->GetSlewRec(i); - fSlewingRec.AddAtAndExpand(gr,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), - fSlewingRec(0) + fWalk(0) { // @@ -76,23 +91,35 @@ 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))); + } + + 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(" timeWalk %i , qt %i timeEq %i \n ", - timeWalk, qt, timeEq )); - return timeEq; + return timeEq; }