]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0Calibrator.cxx
T0 Option needed for cosmic run reconstruction (Alla)
[u/mrichter/AliRoot.git] / T0 / AliT0Calibrator.cxx
index 8c78f167e4a9cd158cbcc4e80f70158e6236435e..90bcad8545975338840147b9046c662a5cd4d697 100644 (file)
  **************************************************************************/
 
 /* $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 <TGraph.h>
 #include <TH1F.h>
+//#include "iostream.h"
 
 ClassImp(AliT0Calibrator)
 
@@ -31,6 +40,8 @@ ClassImp(AliT0Calibrator)
   fChannelWidth(0),  
   fWalk(0)
 {
+  //constructor
+
   AliT0Parameters* param = AliT0Parameters::Instance();
   param->Init();
   
@@ -40,7 +51,6 @@ ClassImp(AliT0Calibrator)
     fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i));
     TGraph* fu = param ->GetWalk(i);
     fWalk.AddAtAndExpand(fu,i);
-
   }
   
   //
@@ -75,20 +85,30 @@ 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 ipmt, Int_t qt, Int_t time, TString option
 {
   //slewing correcion and equalizing channels
 
-  Int_t timeEq=0, timeWalk=0;  
+  Float_t walk=0;
+     Float_t maxValue=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) ;
-  
-  timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]);
-  AliDebug(10,Form(" time before %i timeWalk %i ,  qt %i timeEq %i \n ",
-                 time,timeWalk, qt, timeEq ));
+  if(fu1){
+    walk=fu1->Eval(Float_t(qt));
+    TH1F*hr=fu1->GetHistogram();
+    maxValue=hr->GetMaximum(50);
+  }
+  if (option == "pdc") {
+    timeWalk = time + Int_t((maxValue-walk)/fChannelWidth) ;
+    timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]);
+  }
+  if (option == "cosmic") {
+    timeWalk = time + Int_t((maxValue-walk)) ;
+    if (ipmt<12) timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]);
+    if (ipmt>11)  timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[12]);
+  }
+  AliDebug(10,Form(" ipmt %i time before %i timeWalk %i ,  qt %i timeEq %i \n ",
+                ipmt, time,timeWalk, qt, timeEq ));
   return timeEq;
 }