Implementation of single-event reconstruction for TPC. The clusterer is instantiated...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Jun 2007 11:04:09 +0000 (11:04 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Jun 2007 11:04:09 +0000 (11:04 +0000)
TPC/AliTPCReconstructor.cxx
TPC/AliTPCReconstructor.h

index ef75a27..5e6048d 100644 (file)
@@ -40,7 +40,10 @@ AliTPCRecoParam *    AliTPCReconstructor::fgkRecoParam =0;  // reconstruction pa
 Int_t    AliTPCReconstructor::fgStreamLevel     = 0;        // stream (debug) level
 
 
-AliTPCReconstructor::AliTPCReconstructor(): AliReconstructor() {
+AliTPCReconstructor::AliTPCReconstructor():
+AliReconstructor(),
+fClusterer(NULL)
+{
   //
   // default constructor
   //
@@ -48,8 +51,21 @@ AliTPCReconstructor::AliTPCReconstructor(): AliReconstructor() {
     AliError("The Reconstruction parameters nonitialized - Used default one");
     fgkRecoParam = AliTPCRecoParam::GetHighFluxParam();
   }
+
+  AliTPCParam* param = GetTPCParam();
+  if (!param) {
+    AliWarning("Loading default TPC parameters !");
+    param = new AliTPCParamSR;
+  }
+  fClusterer = new AliTPCclustererMI(param);
 }
 
+//_____________________________________________________________________________
+AliTPCReconstructor::~AliTPCReconstructor()
+{
+  if (fgkRecoParam) delete fgkRecoParam;
+  if (fClusterer)   delete fClusterer;
+}
 
 //_____________________________________________________________________________
 void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
@@ -64,9 +80,6 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
   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++) {
@@ -83,9 +96,9 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
       return;
     }
 
-    clusterer.SetInput(treeDigits);
-    clusterer.SetOutput(treeClusters);
-    clusterer.Digits2Clusters();
+    fClusterer->SetInput(treeDigits);
+    fClusterer->SetOutput(treeClusters);
+    fClusterer->Digits2Clusters();
          
     loader->WriteRecPoints("OVERWRITE");
   }
@@ -95,6 +108,15 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
 }
 
 //_____________________________________________________________________________
+void AliTPCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) const {
+  // single event local reconstruction
+  // of TPC data
+  fClusterer->SetInput(digitsTree);
+  fClusterer->SetOutput(clustersTree);
+  fClusterer->Digits2Clusters();
+}
+
+//_____________________________________________________________________________
 void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader,
                                      AliRawReader* rawReader) const
 {
@@ -107,18 +129,9 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader,
   }
   loader->LoadRecPoints("recreate");
 
-  AliTPCParam* param = GetTPCParam(runLoader);
-  if (!param) {
-    AliWarning("Loading default TPC parameters !");
-    param = new AliTPCParamSR;
-  }
-  AliTPCclustererMI clusterer(param);
-
   TString option = GetOption();
-  //  if (option.Contains("PedestalSubtraction"))
-  //  clusterer.SetPedSubtraction(kTRUE);
   if (option.Contains("OldRCUFormat"))
-    clusterer.SetOldRCUFormat(kTRUE);
+    fClusterer->SetOldRCUFormat(kTRUE);
  
   Int_t iEvent = 0;
   while (rawReader->NextEvent()) {  
@@ -130,8 +143,8 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader,
       treeClusters = loader->TreeR();
     }
 
-    clusterer.SetOutput(treeClusters);
-    clusterer.Digits2Clusters(rawReader);
+    fClusterer->SetOutput(treeClusters);
+    fClusterer->Digits2Clusters(rawReader);
          
     loader->WriteRecPoints("OVERWRITE");
   }
@@ -140,11 +153,23 @@ void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader,
 }
 
 //_____________________________________________________________________________
-AliTracker* AliTPCReconstructor::CreateTracker(AliRunLoader* runLoader) const
+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
 {
 // create a TPC tracker
 
-  AliTPCParam* param = GetTPCParam(runLoader);
+  AliTPCParam* param = GetTPCParam();
   if (!param) {
     AliWarning("Loading default TPC parameters !");
     param = new AliTPCParamSR;
@@ -166,18 +191,11 @@ void AliTPCReconstructor::FillESD(AliRunLoader* /*runLoader*/,
 
 
 //_____________________________________________________________________________
-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");
+  AliTPCParam* param = AliTPCcalibDB::Instance()->GetParameters();
 
-//  saveDir->cd();
   return param;
 }
index 0e0e326..21c1adc 100644 (file)
@@ -9,22 +9,20 @@
 #include "AliTPCRecoParam.h"
 
 class AliTPCParam;
-
+class AliTPCclustererMI;
 
 class AliTPCReconstructor: public AliReconstructor {
 public:
   AliTPCReconstructor();
-  virtual ~AliTPCReconstructor() {if (fgkRecoParam) delete fgkRecoParam;};
+  virtual ~AliTPCReconstructor();
 
+  virtual Bool_t       HasLocalReconstruction() const {return kTRUE;}
   virtual void         Reconstruct(AliRunLoader* runLoader) const;
   virtual void         Reconstruct(AliRunLoader* runLoader,
                                   AliRawReader* rawReader) const;
-  virtual void         Reconstruct(TTree* digitsTree, TTree* clustersTree) const {
-    AliReconstructor::Reconstruct(digitsTree,clustersTree);
-  }
-  virtual void         Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const {
-    AliReconstructor::Reconstruct(rawReader,clustersTree);
-  }
+  virtual void         Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
+  virtual void         Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
+
   virtual AliTracker*  CreateTracker(AliRunLoader* runLoader) const;
   virtual void         FillESD(AliRunLoader* runLoader, AliESD* esd) const;
   virtual void         FillESD(TTree* digitsTree, TTree* clustersTree, 
@@ -51,9 +49,10 @@ public:
   static void  SetStreamLevel(Int_t level) { fgStreamLevel = level;}
 
 private:
-  AliTPCParam*         GetTPCParam(AliRunLoader* runLoader) const;
+  AliTPCParam*         GetTPCParam() const;
   static AliTPCRecoParam *   fgkRecoParam; // reconstruction parameters
   static Int_t               fgStreamLevel; // flag for streaming      - for TPC reconstruction
+  AliTPCclustererMI*         fClusterer;   // TPC clusterer
 
   ClassDef(AliTPCReconstructor, 0)   // class for the TPC reconstruction
 };