framework for reconstruction of raw data
authortkuhr <tkuhr@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 5 Jul 2004 08:32:01 +0000 (08:32 +0000)
committertkuhr <tkuhr@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 5 Jul 2004 08:32:01 +0000 (08:32 +0000)
STEER/AliReconstruction.cxx
STEER/AliReconstruction.h
STEER/AliReconstructor.cxx
STEER/AliReconstructor.h
STEER/libSTEER.pkg

index f1fd8fc..47f1f28 100644 (file)
@@ -78,6 +78,9 @@
 #include "AliReconstruction.h"
 #include "AliRunLoader.h"
 #include "AliRun.h"
+#include "AliRawReaderFile.h"
+#include "AliRawReaderDate.h"
+#include "AliRawReaderRoot.h"
 #include "AliTracker.h"
 #include "AliESD.h"
 #include "AliESDVertex.h"
@@ -103,10 +106,12 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename,
   fRunTracking(kTRUE),
   fFillESD("ALL"),
   fGAliceFileName(gAliceFilename),
+  fInput(""),
   fStopOnError(kFALSE),
   fCheckPointLevel(0),
 
   fRunLoader(NULL),
+  fRawReader(NULL),
   fITSLoader(NULL),
   fITSVertexer(NULL),
   fITSTracker(NULL),
@@ -133,10 +138,12 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
   fRunTracking(rec.fRunTracking),
   fFillESD(rec.fFillESD),
   fGAliceFileName(rec.fGAliceFileName),
+  fInput(rec.fInput),
   fStopOnError(rec.fStopOnError),
   fCheckPointLevel(0),
 
   fRunLoader(NULL),
+  fRawReader(NULL),
   fITSLoader(NULL),
   fITSVertexer(NULL),
   fITSTracker(NULL),
@@ -197,10 +204,22 @@ void AliReconstruction::SetOption(const char* detector, const char* option)
 
 
 //_____________________________________________________________________________
-Bool_t AliReconstruction::Run()
+Bool_t AliReconstruction::Run(const char* input)
 {
 // run the reconstruction
 
+  // set the input
+  if (!input) input = fInput.Data();
+  TString fileName(input);
+  if (fileName.EndsWith("/")) {
+    fRawReader = new AliRawReaderFile(fileName);
+  } else if (fileName.EndsWith(".root")) {
+    fRawReader = new AliRawReaderRoot(fileName);
+  } else if (!fileName.IsNull()) {
+    fRawReader = new AliRawReaderDate(fileName);
+    fRawReader->SelectEvents(7);
+  }
+
   // open the run loader
   fRunLoader = AliRunLoader::Open(fGAliceFileName.Data());
   if (!fRunLoader) {
@@ -298,9 +317,11 @@ Bool_t AliReconstruction::Run()
   gROOT->cd();
 
   // loop over events
+  if (fRawReader) fRawReader->RewindEvents();
   for (Int_t iEvent = 0; iEvent < fRunLoader->GetNumberOfEvents(); iEvent++) {
     Info("Run", "processing event %d", iEvent);
     fRunLoader->GetEvent(iEvent);
+    if (fRawReader) fRawReader->NextEvent();
 
     char fileName[256];
     sprintf(fileName, "ESD_%d.%d_final.root", 
@@ -372,23 +393,28 @@ Bool_t AliReconstruction::RunLocalReconstruction(const TString& detectors)
       (AliReconstructor*) fReconstructors[iDet];
     TString detName = reconstructor->GetDetectorName();
     if (IsSelected(detName, detStr)) {
-      Info("RunReconstruction", "running reconstruction for %s", 
+      Info("RunLocalReconstruction", "running reconstruction for %s", 
           detName.Data());
       TStopwatch stopwatchDet;
       stopwatchDet.Start();
-      reconstructor->Reconstruct(fRunLoader);
-      Info("RunReconstruction", "execution time for %s:", detName.Data());
+      if (fRawReader) {
+       fRawReader->RewindEvents();
+       reconstructor->Reconstruct(fRunLoader, fRawReader);
+      } else {
+       reconstructor->Reconstruct(fRunLoader);
+      }
+      Info("RunLocalReconstruction", "execution time for %s:", detName.Data());
       stopwatchDet.Print();
     }
   }
 
   if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
-    Error("RunReconstruction", "the following detectors were not found: %s", 
-         detStr.Data());
+    Error("RunLocalReconstruction", 
+         "the following detectors were not found: %s", detStr.Data());
     if (fStopOnError) return kFALSE;
   }
 
-  Info("RunReconstruction", "execution time:");
+  Info("RunLocalReconstruction", "execution time:");
   stopwatch.Print();
 
   return kTRUE;
@@ -608,7 +634,11 @@ Bool_t AliReconstruction::FillESD(AliESD*& esd, const TString& detectors)
     if (IsSelected(detName, detStr)) {
       if (!ReadESD(esd, detName.Data())) {
        Info("FillESD", "filling ESD for %s", detName.Data());
-       reconstructor->FillESD(fRunLoader, esd);
+       if (fRawReader) {
+         reconstructor->FillESD(fRunLoader, fRawReader, esd);
+       } else {
+         reconstructor->FillESD(fRunLoader, esd);
+       }
        if (fCheckPointLevel > 2) WriteESD(esd, detName.Data());
       }
     }
@@ -785,6 +815,8 @@ void AliReconstruction::CleanUp(TFile* file)
 
   delete fRunLoader;
   fRunLoader = NULL;
+  delete fRawReader;
+  fRawReader = NULL;
 
   if (file) {
     file->Close();
index d402f9b..6850d74 100644 (file)
@@ -24,6 +24,7 @@
 #include "AliDetector.h"
 
 class AliRunLoader;
+class AliRawReader;
 class AliLoader;
 class AliVertexer;
 class AliTracker;
@@ -41,6 +42,7 @@ public:
   virtual ~AliReconstruction();
 
   void           SetGAliceFile(const char* fileName);
+  void           SetInput(const char* input) {fInput = input;};
   void           SetOption(const char* detector, const char* option);
 
   void           SetRunLocalReconstruction(const char* detectors) {
@@ -54,7 +56,7 @@ public:
   void           SetCheckPointLevel(Int_t checkPointLevel)
     {fCheckPointLevel = checkPointLevel;}
 
-  virtual Bool_t Run();
+  virtual Bool_t Run(const char* input = NULL);
 
 private:
   class AliDummyReconstructor: public AliReconstructor {
@@ -101,10 +103,12 @@ private:
   Bool_t         fRunTracking;        // run the barrel tracking
   TString        fFillESD;            // fill ESD for these detectors
   TString        fGAliceFileName;     // name of the galice file
+  TString        fInput;              // name of input file or directory
   Bool_t         fStopOnError;        // stop or continue on errors
   Int_t          fCheckPointLevel;    // level of ESD check points
 
   AliRunLoader*  fRunLoader;          //! current run loader object
+  AliRawReader*  fRawReader;          //! current raw data reader
   AliLoader*     fITSLoader;          //! loader for ITS
   AliVertexer*   fITSVertexer;        //! vertexer for ITS
   AliTracker*    fITSTracker;         //! tracker for ITS
@@ -120,7 +124,7 @@ private:
   TObjArray      fReconstructors;     //! array of reconstructor objects
   TObjArray      fOptions;            // options for reconstructor objects
 
-  ClassDef(AliReconstruction, 1)      // class for running the reconstruction
+  ClassDef(AliReconstruction, 2)      // class for running the reconstruction
 };
 
 #endif
index 267a16e..e8beac7 100644 (file)
@@ -42,6 +42,27 @@ ClassImp(AliReconstructor)
 
 
 //_____________________________________________________________________________
+void AliReconstructor::Reconstruct(AliRunLoader* /*runLoader*/, 
+                                  AliRawReader* /*rawReader*/) const
+{
+// run the local reconstruction with raw data input
+
+  Error("Reconstruct", 
+       "local reconstruction not implemented for raw data input");
+}
+
+//_____________________________________________________________________________
+void AliReconstructor::FillESD(AliRunLoader* runLoader, 
+                              AliRawReader* /*rawReader*/, AliESD* esd) const
+{
+// fill the ESD in case of raw data input.
+// by default the FillESD method for MC is called
+
+  FillESD(runLoader, esd);
+}
+
+
+//_____________________________________________________________________________
 const char* AliReconstructor::GetDetectorName() const
 {
 // get the name of the detector
index 4fcd728..14dcce8 100644 (file)
@@ -15,6 +15,7 @@
 #include <TString.h>
 
 class AliRunLoader;
+class AliRawReader;
 class AliVertexer;
 class AliTracker;
 class AliESD;
@@ -26,11 +27,15 @@ public:
   virtual ~AliReconstructor() {};
 
   virtual void         Reconstruct(AliRunLoader* runLoader) const = 0;
+  virtual void         Reconstruct(AliRunLoader* runLoader, 
+                                  AliRawReader* rawReader) const;
   virtual AliVertexer* CreateVertexer(AliRunLoader* /*runLoader*/) const 
     {return NULL;}
   virtual AliTracker*  CreateTracker(AliRunLoader* /*runLoader*/) const 
     {return NULL;}
   virtual void         FillESD(AliRunLoader* runLoader, AliESD* esd) const = 0;
+  virtual void         FillESD(AliRunLoader* runLoader, 
+                              AliRawReader* rawReader, AliESD* esd) const;
 
   virtual const char*  GetDetectorName() const;
 
index b57e612..fc4f019 100644 (file)
@@ -25,5 +25,7 @@ HDRS:= $(SRCS:.cxx=.h)
 
 DHDR= STEERLinkDef.h
 
+EINCLUDE:=RAW
+
 EXPORT:=$(SRCS:.cxx=.h) AliConst.h AliCallf77.h