+
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
**************************************************************************/
/* $Id$ */
-
-#include <Riostream.h>
+/***********************************************************************
+ * this class doing calibration during reconstruction
+ * 2 steps:
+ * - equalizing channels
+ * - applying walk corrections
+ *
+ * Alla.Maevskaya@cern.ch
+ *
+ **********************************************************************/
+
+//#include <Riostream.h>
#include "AliLog.h"
#include "AliT0Parameters.h"
#include "AliT0Calibrator.h"
-#include <TArrayI.h>
+#include "AliT0Reconstructor.h"
+#include "AliT0RecoParam.h"
+#include "AliCDBEntry.h"
+#include "AliCDBManager.h"
+
#include <TGraph.h>
+#include <TH1F.h>
+#include <TMath.h>
+#include <Riostream.h>
ClassImp(AliT0Calibrator)
//____________________________________________________________________
- AliT0Calibrator::AliT0Calibrator():
- fChannelWidth(0),
- fWalk(0),
- fSlewingRec(0)
+ AliT0Calibrator::AliT0Calibrator():TNamed(),
+ fChannelWidth(0),
+ fWalk(0),
+ fEqualized(0)
+
{
- AliT0Parameters* param = AliT0Parameters::Instance();
- param->Init();
-
+ //constructor
+ printf(" AliT0Calibrator ::: AliT0RecoParam GetEq() %i\n", fEqualized);
+ 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):
- fChannelWidth(0),
- fWalk(0),
- fSlewingRec(0)
+AliT0Calibrator::AliT0Calibrator(const AliT0Calibrator &r): TNamed(),
+ fChannelWidth(0),
+ fWalk(0),
+ fEqualized(0)
{
//
}
-
//____________________________________________________________________
-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
+ 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) {
+ walk = Int_t(fu1->Eval(Double_t(qt)));
+ }
+
+ if (fEqualized == 0)
+ timeEq= time - fTimeDelayCFD[ipmt]-walk;
+ else
+ timeEq = time - walk - refAmp;
+
+ // 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(2,Form(" fEqualized %i ipmt %i refAmp %i time before %i timeWalk %i , walk %i qt %i timeEq %i, diff %i \n ",
+ fEqualized, ipmt, refAmp, time,timeWalk, walk, qt, timeEq , fTimeDelayCFD[ipmt]));
- timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]);
- AliDebug(2,Form(" timeWalk %i , qt %i timeEq %i \n ",
- timeWalk, qt, timeEq ));
- return timeEq;
+ return timeEq;
}