]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0Calibrator.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / T0 / AliT0Calibrator.cxx
index e972053f0172dfc18267c2f34852adf10b5feb87..f5b4966631a891d38cd3da3058859656bccd24ce 100644 (file)
@@ -1,3 +1,4 @@
+
 /**************************************************************************
  * 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)
 
 {
   //
@@ -75,23 +96,32 @@ 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
 
+   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;
 }