]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFReconstructor.cxx
Fix for coverity
[u/mrichter/AliRoot.git] / TOF / AliTOFReconstructor.cxx
index 6ff0e34a49549a1ccd9051a4dff9b77118dd4606..32c27c745e90f5ac1820b404aa95d7018617bc50 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <cstdlib>
+#include "TObjArray.h"
+#include "TString.h"
 
-#include "AliTOFReconstructor.h"
-#include "AliRunLoader.h"
-#include "AliRun.h"
-#include "AliTOF.h"
+#include "AliLog.h"
+#include "AliESDEvent.h"
+#include "AliESDpid.h"
+#include "AliRawReader.h"
+#include "AliTOFHeader.h"
+
+#include "AliTOFClusterFinder.h"
+#include "AliTOFClusterFinderV1.h"
+#include "AliTOFcalib.h"
+#include "AliTOFtrackerMI.h"
 #include "AliTOFtracker.h"
+#include "AliTOFtrackerV1.h"
+#include "AliTOFT0maker.h"
+#include "AliTOFReconstructor.h"
 
+class TTree;
 
 ClassImp(AliTOFReconstructor)
 
+ //____________________________________________________________________
+AliTOFReconstructor::AliTOFReconstructor() 
+  : AliReconstructor(),
+    fTOFcalib(0)/*,
+                 fTOFT0maker(0)*/
+{
+//
+// ctor
+//
+  
+  //Retrieving the TOF calibration info  
+  fTOFcalib = new AliTOFcalib();
+  fTOFcalib->Init();
+
+#if 0
+  fTOFcalib->CreateCalObjects();
+
+  if(!fTOFcalib->ReadParOnlineDelayFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+  if(!fTOFcalib->ReadParOnlineStatusFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+
+  if(!fTOFcalib->ReadParOfflineFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+
+
+  if(!fTOFcalib->ReadDeltaBCOffsetFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+  if(!fTOFcalib->ReadCTPLatencyFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+  if(!fTOFcalib->ReadT0FillFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+  if(!fTOFcalib->ReadRunParamsFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);}  
+#endif
+
+}
 
 //_____________________________________________________________________________
-void AliTOFReconstructor::Reconstruct(AliRunLoader* /*runLoader*/) const
+AliTOFReconstructor::~AliTOFReconstructor() 
 {
-// nothing to be done
+//
+// dtor
+//
+
+  delete fTOFcalib;
+
+  //delete fTOFT0maker;
 
 }
 
 //_____________________________________________________________________________
-AliTracker* AliTOFReconstructor::CreateTracker(AliRunLoader* runLoader) const
+void AliTOFReconstructor::Reconstruct(AliRawReader *rawReader,
+                                      TTree *clustersTree) const
 {
-// create a TOF tracker
+  //
+  // reconstruct clusters from Raw Data
+  //
+
+  TString optionString = GetOption();
+
+  // use V1 cluster finder if selected
+  if (optionString.Contains("ClusterizerV1")) {
+    static AliTOFClusterFinderV1 tofClus(fTOFcalib);
+
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+    
+    tofClus.Digits2RecPoints(rawReader, clustersTree);
+  }
+  else {
+    static AliTOFClusterFinder tofClus(fTOFcalib);
+    
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+
+    tofClus.Digits2RecPoints(rawReader, clustersTree);
+  }
 
-  AliTOFGeometry* geom = GetTOFGeometry(runLoader);
-  if (!geom) return NULL;
-  Double_t parPID[] = {130., 5.};
-  return new AliTOFtracker(geom, parPID);
 }
 
 //_____________________________________________________________________________
-void AliTOFReconstructor::FillESD(AliRunLoader* /*runLoader*/, 
-                                 AliESD* /*esd*/) const
+void AliTOFReconstructor::Reconstruct(TTree *digitsTree,
+                                      TTree *clustersTree) const
 {
-// nothing to be done
+  //
+  // reconstruct clusters from digits
+  //
+
+  AliDebug(2,Form("Global Event loop mode: Creating Recpoints from Digits Tree")); 
+
+  TString optionString = GetOption();
+  // use V1 cluster finder if selected
+  if (optionString.Contains("ClusterizerV1")) {
+    static AliTOFClusterFinderV1 tofClus(fTOFcalib);
+
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+    
+    tofClus.Digits2RecPoints(digitsTree, clustersTree);
+  }
+  else {
+    static AliTOFClusterFinder tofClus(fTOFcalib);
+
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+    
+    tofClus.Digits2RecPoints(digitsTree, clustersTree);
+  }
 
 }
+//_____________________________________________________________________________
+  void AliTOFReconstructor::ConvertDigits(AliRawReader* reader, TTree* digitsTree) const
+{
+// reconstruct clusters from digits
+
+  AliDebug(2,Form("Global Event loop mode: Converting Raw Data to a Digits Tree")); 
+
+  TString optionString = GetOption();
+  // use V1 cluster finder if selected
+  if (optionString.Contains("ClusterizerV1")) {
+    static AliTOFClusterFinderV1 tofClus(fTOFcalib);
+
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+    
+    tofClus.Raw2Digits(reader, digitsTree);
+  }
+  else {
+    static AliTOFClusterFinder tofClus(fTOFcalib);
+
+    // decoder version option
+    if (optionString.Contains("DecoderV0")) {
+      tofClus.SetDecoderVersion(0);
+    }
+    else if (optionString.Contains("DecoderV1")) {
+      tofClus.SetDecoderVersion(1);
+    }
+    else {
+      tofClus.SetDecoderVersion(2);
+    }
+    
+    tofClus.Raw2Digits(reader, digitsTree);
+  }
 
+}
 
 //_____________________________________________________________________________
-AliTOFGeometry* AliTOFReconstructor::GetTOFGeometry(AliRunLoader* runLoader) const
+AliTracker* AliTOFReconstructor::CreateTracker() const
 {
-// get the TOF parameters
 
-  if (!runLoader->GetAliRun()) runLoader->LoadgAlice();
-  if (!runLoader->GetAliRun()) {
-    Error("GetTOFGeometry", "couldn't get AliRun object");
-    return NULL;
+  // 
+  // create a TOF tracker using 
+  // TOF Reco Param collected by STEER
+  //
+
+  TString selectedTracker = GetOption();
+  AliTracker *tracker;
+  // use MI tracker if selected
+  if (selectedTracker.Contains("TrackerMI")) {
+    tracker = new AliTOFtrackerMI();
   }
-  AliTOF* tof = (AliTOF*) runLoader->GetAliRun()->GetDetector("TOF");
-  if (!tof) {
-    Error("GetTOFGeometry", "couldn't get TOF detector");
-    return NULL;
+  // use V1 tracker if selected
+  else if (selectedTracker.Contains("TrackerV1")) {
+    tracker =  new AliTOFtrackerV1();
   }
-  if (!tof->GetGeometry()) {
-    Error("GetTOFGeometry", "no TOF geometry available");
-    return NULL;
+  else {
+    tracker = new AliTOFtracker();
   }
-  return tof->GetGeometry();
+  return tracker;
+
+}
+
+//_____________________________________________________________________________
+void AliTOFReconstructor::FillEventTimeWithTOF(AliESDEvent *event, AliESDpid *esdPID)
+{
+  //
+  // Fill AliESDEvent::fTOFHeader variable
+  // It contains the event_time estiamted by the TOF combinatorial algorithm
+  //
+
+  if (!GetRecoParam()) AliFatal("cannot get TOF RECO params");
+
+  Float_t tofResolution = GetRecoParam()->GetTimeResolution();// TOF time resolution in ps
+  AliTOFT0maker *tofT0maker = new AliTOFT0maker(esdPID,fTOFcalib);
+  //AliTOFT0maker tofT0maker = AliTOFT0maker(esdPID,fTOFcalib);
+  tofT0maker->SetTimeResolution(tofResolution);
+  tofT0maker->ComputeT0TOF(event);
+  tofT0maker->WriteInESD(event);
+  tofT0maker->~AliTOFT0maker();
+  delete tofT0maker;
+
+}
+
+//_____________________________________________________________________________
+void 
+AliTOFReconstructor::FillESD(TTree *, TTree *, AliESDEvent * /*esdEvent*/) const
+{
+  //
+  // correct Texp 
+  // 
+  //
+
+  //  fTOFcalib->CalibrateTExp(esdEvent);
 }