]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCReconstructor.cxx
Visulaization macro for ExB effect (Marian)
[u/mrichter/AliRoot.git] / TPC / AliTPCReconstructor.cxx
index 4df397b01b76b9567f7518e67cccfa231499366a..8517a68b565a098f6661aa292f7bd4d5f7cabe27 100644 (file)
 #include "AliTPCReconstructor.h"
 #include "AliRunLoader.h"
 #include "AliRun.h"
+#include "AliRawReader.h"
 #include "AliTPCclustererMI.h"
 #include "AliTPCtrackerMI.h"
 #include "AliTPCpidESD.h"
-
+#include "AliTPCParam.h"
+#include "AliTPCParamSR.h"
+#include "AliTPCcalibDB.h"
 
 ClassImp(AliTPCReconstructor)
 
 
-//_____________________________________________________________________________
-void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
-{
-// reconstruct clusters
+AliTPCRecoParam *    AliTPCReconstructor::fgkRecoParam =0;  // reconstruction parameters
+Int_t    AliTPCReconstructor::fgStreamLevel     = 0;        // stream (debug) level
 
-  AliLoader* loader = runLoader->GetLoader("TPCLoader");
-  if (!loader) {
-    Error("Reconstruct", "TPC loader not found");
-    return;
-  }
-  loader->LoadRecPoints("recreate");
-  loader->LoadDigits("read");
 
-  AliTPCParam* param = GetTPCParam(runLoader);
-  if (!param) return;
-  AliTPCclustererMI clusterer(param);
-  Int_t nEvents = runLoader->GetNumberOfEvents();
-
-  for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
-    runLoader->GetEvent(iEvent);
+AliTPCReconstructor::AliTPCReconstructor():
+AliReconstructor(),
+fClusterer(NULL)
+{
+  //
+  // default constructor
+  //
+  //
+  //
+  AliTPCParam* param = GetTPCParam();
+  if (!param) {
+    AliWarning("Loading default TPC parameters !");
+    param = new AliTPCParamSR;
+  }
+  fClusterer = new AliTPCclustererMI(param);
+}
 
-    TTree* treeClusters = loader->TreeR();
-    if (!treeClusters) {
-      loader->MakeTree("R");
-      treeClusters = loader->TreeR();
-    }
-    TTree* treeDigits = loader->TreeD();
-    if (!treeDigits) {
-      Error("Reconstruct", "Can't get digits tree !");
-      return;
-    }
+//_____________________________________________________________________________
+AliTPCReconstructor::~AliTPCReconstructor()
+{
+  if (fgkRecoParam) delete fgkRecoParam;
+  if (fClusterer)   delete fClusterer;
+}
 
-    clusterer.SetInput(treeDigits);
-    clusterer.SetOutput(treeClusters);
-    clusterer.Digits2Clusters();
-         
-    loader->WriteRecPoints("OVERWRITE");
-  }
+//_____________________________________________________________________________
+void AliTPCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) const {
+  // single event local reconstruction
+  // of TPC data
+  fClusterer->SetInput(digitsTree);
+  fClusterer->SetOutput(clustersTree);
+  fClusterer->Digits2Clusters();
+}
 
-  loader->UnloadRecPoints();
-  loader->UnloadDigits();
+//_____________________________________________________________________________
+void AliTPCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const {
+  // single event local reconstruction
+  // of TPC data starting from raw data
+  TString option = GetOption();
+  if (option.Contains("OldRCUFormat"))
+    fClusterer->SetOldRCUFormat(kTRUE);
+
+  fClusterer->SetOutput(clustersTree);
+  fClusterer->Digits2Clusters(rawReader);
 }
 
 //_____________________________________________________________________________
-AliTracker* AliTPCReconstructor::CreateTracker(AliRunLoader* runLoader) const
+AliTracker* AliTPCReconstructor::CreateTracker() const
 {
 // create a TPC tracker
 
-  AliTPCParam* param = GetTPCParam(runLoader);
-  if (!param) return NULL;
+  AliTPCParam* param = GetTPCParam();
+  if (!param) {
+    AliWarning("Loading default TPC parameters !");
+    param = new AliTPCParamSR;
+  }
+  param->ReadGeoMatrices();
   return new AliTPCtrackerMI(param);
 }
 
 //_____________________________________________________________________________
-void AliTPCReconstructor::FillESD(AliRunLoader* /*runLoader*/, 
-                                 AliESD* esd) const
+void AliTPCReconstructor::FillESD(TTree */*digitsTree*/, TTree */*clustersTree*/,
+                                 AliESDEvent* esd) const
 {
 // make PID
 
-  Double_t parTPC[] = {47., 0.10, 10.};
+  Double_t parTPC[] = {47., 0.07, 5.};
   AliTPCpidESD tpcPID(parTPC);
   tpcPID.MakePID(esd);
 }
 
 
 //_____________________________________________________________________________
-AliTPCParam* AliTPCReconstructor::GetTPCParam(AliRunLoader* runLoader) const
+AliTPCParam* AliTPCReconstructor::GetTPCParam() const
 {
 // get the TPC parameters
 
-  TDirectory* saveDir = gDirectory;
-  runLoader->CdGAFile();
+  AliTPCParam* param = AliTPCcalibDB::Instance()->GetParameters();
 
-  AliTPCParam* param = (AliTPCParam*) gDirectory->Get("75x40_100x60_150x60");
-  if (!param) Error("GetTPCParam", "no TPC parameters found");
-
-  saveDir->cd();
   return param;
 }
+
+
+
+
+const AliTPCRecoParam* AliTPCReconstructor::GetRecoParam(){ 
+  //
+  // Get reconstruction parameters
+  //
+  
+   if (!fgkRecoParam) {
+    //
+    // 1. try to get reco parameters from OCDB 
+    //
+    fgkRecoParam = AliTPCcalibDB::Instance()->GetRecoParam(0);
+    //Info("","Reconstruction parameters from OCDB used");
+    //
+    // 2. If not initialized take default
+    //
+    if (!fgkRecoParam){
+      fgkRecoParam = AliTPCRecoParam::GetHighFluxParam();
+      //Error("","Default reconstruction parameters  used");
+    }
+  }
+
+  return fgkRecoParam;
+}