Introducing the AliEMCALReconstructor class driving from AliReconstructor
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 3 May 2004 09:10:03 +0000 (09:10 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 3 May 2004 09:10:03 +0000 (09:10 +0000)
EMCAL particles are put in AliESDtrack format rather than the obsolete AliCaloTrack

EMCAL/AliEMCAL.cxx
EMCAL/AliEMCAL.h
EMCAL/AliEMCALReconstructioner.cxx [deleted file]
EMCAL/AliEMCALReconstructioner.h [deleted file]
EMCAL/AliEMCALReconstructor.cxx [new file with mode: 0644]
EMCAL/AliEMCALReconstructor.h [new file with mode: 0644]
EMCAL/EMCALLinkDef.h
EMCAL/libEMCAL.pkg

index c4f9c0c..e1c193f 100644 (file)
@@ -42,7 +42,6 @@ class TFile;
 #include "AliRun.h"
 #include "AliEMCALSDigitizer.h"
 #include "AliEMCALDigitizer.h"
-#include "AliEMCALReconstructioner.h"
 
 ClassImp(AliEMCAL)
 //____________________________________________________________________________
@@ -156,23 +155,7 @@ void AliEMCAL::CreateMaterials()
   gMC->Gstpar(idtmed[1601],"BCUTE",0.0001) ;
 
 }
-
-//____________________________________________________________________________
-void AliEMCAL::FillESD(AliESD* esd) const 
-{
-  // Fill the ESD with all RecParticles
-  AliEMCALGetter *gime = AliEMCALGetter::Instance( (fLoader->GetRunLoader()->GetFileName()).Data() );
-  gime->Event(gime->EventNumber(), "P") ; 
-  TClonesArray *recParticles = gime->RecParticles();
-  Int_t nOfRecParticles = recParticles->GetEntries();
-  for (Int_t recpart=0; recpart<nOfRecParticles; recpart++) {
-    AliESDCaloTrack *ct = new AliESDCaloTrack((AliEMCALRecParticle*)recParticles->At(recpart));
-    esd->AddCaloTrack(ct);
-    delete ct;
-  }
-}       
-
-
+      
 //____________________________________________________________________________
 void AliEMCAL::Hits2SDigits()  
 { 
@@ -185,14 +168,6 @@ void AliEMCAL::Hits2SDigits()
 }
 
 //____________________________________________________________________________
-void AliEMCAL::Reconstruct() const 
-{ 
-  AliEMCALReconstructioner * rec = new AliEMCALReconstructioner((fLoader->GetRunLoader()->GetFileName()).Data()) ; 
-  rec->SetEventRange(0, -1) ; // do all the events  
-  rec->ExecuteTask() ; 
-}
-
-//____________________________________________________________________________
 AliLoader* AliEMCAL::MakeLoader(const char* topfoldername)
 {
 //different behaviour than standard (singleton getter)
index 590599e..ef44e10 100644 (file)
@@ -38,14 +38,12 @@ class AliEMCAL : public AliDetector {
   void Copy(AliEMCAL & emcal) ; 
   virtual void  CreateMaterials() ;   
   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
-  virtual void  FillESD(AliESD* esd) const ; 
   virtual void  FinishRun() {}                  
   virtual AliEMCALGeometry * GetGeometry() const 
   {return AliEMCALGeometry::GetInstance(GetTitle(),"") ;  }   
   virtual void    Hits2SDigits();
   virtual Int_t   IsVersion(void) const = 0 ;   
   virtual AliLoader* MakeLoader(const char* topfoldername);
-  virtual void Reconstruct() const; 
   virtual void SetTreeAddress() ;              
   virtual const TString Version() const {return TString(" ") ; }   
   AliEMCAL & operator = (const AliEMCAL & /*rvalue*/)  {
diff --git a/EMCAL/AliEMCALReconstructioner.cxx b/EMCAL/AliEMCALReconstructioner.cxx
deleted file mode 100644 (file)
index 2df6ba1..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-//_________________________________________________________________________
-//*--
-//*-- Author: Gines Martinez & Yves Schutz (SUBATECH) 
-//*-- Compleetely redesigned by Dmitri Peressounko (SUBATECH & RRC KI) March 2001
-/////////////////////////////////////////////////////////////////////////////////////
-//  Wrapping class for reconstruction. Allows to produce reconstruction from 
-//  different steps: from previously produced hits,sdigits, etc. Each new reconstruction
-//  flow (e.g. digits, made from them RecPoints,
-//  subsequently made RecParticles) are distinguished by the title of created branches. One can 
-//  use this title as a comment, see use case below. 
-//  Thanks to getters, one can set 
-//  parameters to reconstruction briks. The full set of parameters is saved in the 
-//  corresponding branch: e.g. parameters of clusterizer are stored in branch 
-//  TreeR::AliEMCALClusterizer with the same title as the branch containing the RecPoints. //  TTree does not support overwriting, therefore one can not produce several 
-//  branches with the same names and titles - use different titles.
-//
-//  Use case: 
-//
-//  root [0] AliEMCALReconstructioner * r = new AliEMCALReconstructioner("galice.root")
-//              //  Set the header file
-//  root [1] r->ExecuteTask() 
-//              //  Make full chain of reconstruction
-//
-//              // One can specify the title for each branch 
-//  root [2] r->SetBranchFileName("RecPoints","RecPoints1") ;
-//      
-//             // One can change parameters of reconstruction algorithms
-//  root [3] r->GetClusterizer()->SetEmcLocalMaxCut(0.02)
-//
-//             // One can specify the starting point of the reconstruction and title of all 
-//             // branches produced in this pass
-//  root [4] r->StartFrom("AliEMCALClusterizer","Local max cut 0.02") 
-//             // means that will use already generated Digits and produce only RecPoints, 
-//             // and RecParticles 
-//
-//             // And finally one can call ExecuteTask() with the following options
-//  root [5] r->ExecuteTask("debug all timing")
-//             // deb     - prints the numbers of RecPoints and RecParticles
-//             // deb all - prints in addition list of RecPoints and RecParticles
-//             // timing  - prints benchmarking results
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// --- ROOT system ---
-
-// --- Standard library ---
-
-// --- AliRoot header files ---
-#include "AliESD.h"
-#include "AliESDCaloTrack.h"
-#include "AliEMCALReconstructioner.h"
-#include "AliEMCALClusterizerv1.h"
-#include "AliEMCALPIDv1.h"
-#include "AliEMCALGetter.h"
-
-ClassImp(AliEMCALReconstructioner)
-
-//____________________________________________________________________________
-  AliEMCALReconstructioner::AliEMCALReconstructioner():TTask("AliEMCALReconstructioner","")
-{
-  // ctor
-  fClusterizer = 0 ;
-  fPID         = 0 ; 
-
-  fIsInitialized = kFALSE ;
-
-} 
-
-//____________________________________________________________________________
-AliEMCALReconstructioner::AliEMCALReconstructioner(const char* evFoldName,const char * branchName):
-TTask("AliEMCALReconstructioner",evFoldName)
-{
-  // ctor
-  
-  AliEMCALGetter::Instance(evFoldName) ; 
-
-  fRecPointBranch=branchName ; 
-  fClusterizer = new AliEMCALClusterizerv1(evFoldName, GetTitle());
-  Add(fClusterizer);
-  
-  fRecPartBranch=branchName ; 
-  fPID         = new AliEMCALPIDv1(evFoldName, GetTitle());
-  Add(fPID);
-  
-  fIsInitialized = kTRUE ;
-} 
-//____________________________________________________________________________
-void AliEMCALReconstructioner::Exec(Option_t *opt)
-{
-  //check, if the names of branches, which should be made coincide with already
-  //existing
-  if (!opt) 
-    return ; 
-  if(!fIsInitialized)
-    Init() ;
-}
-//____________________________________________________________________________
-void AliEMCALReconstructioner:: Clusters2Tracks(Int_t ievent, AliESD *event)
-{
-  // Convert EMCAL reconstructed particles into ESD object for event# ievent.
-  // ESD object is returned as an argument event
-
-  if(!fIsInitialized) Init() ;
-
-  fClusterizer->SetEventRange(ievent,ievent);
-  fClusterizer->ExecuteTask();
-  
-  fPID        ->SetEventRange(ievent,ievent);
-  fPID        ->ExecuteTask();
-
-  AliEMCALGetter *gime = AliEMCALGetter::Instance();
-  TClonesArray *recParticles = gime->RecParticles();
-  Int_t nOfRecParticles = recParticles->GetEntries();
-  for (Int_t recpart=0; recpart<nOfRecParticles; recpart++) {
-    AliESDCaloTrack *ct = new AliESDCaloTrack((AliEMCALRecParticle*)recParticles->At(recpart));
-    event->AddCaloTrack(ct);
-  }
-  
-}
-//____________________________________________________________________________
- void AliEMCALReconstructioner::Init()
-{
-  // initiliaze Reconstructioner if necessary: we can not do this in default constructor
-
-  if(!fIsInitialized){
-
-    fRecPointBranch="Default" ; 
-    fClusterizer = new AliEMCALClusterizerv1(GetTitle(),fRecPointBranch.Data());
-    Add(fClusterizer) ;
-
-    fRecPartBranch="Default"; 
-    fPID         = new AliEMCALPIDv1(GetTitle(),fRecPartBranch.Data()) ;
-    Add(fPID) ;
-    
-    fIsInitialized = kTRUE ;
-    
-  }
-} 
-//____________________________________________________________________________
-AliEMCALReconstructioner::~AliEMCALReconstructioner()
-{
-  // Delete data members if any
-} 
-
-//____________________________________________________________________________
-void AliEMCALReconstructioner::Print()const {
-  // Print reconstructioner data  
-
-  TString message ; 
-  message  = "-----------------AliEMCALReconstructioner---------------\n" ;
-  message += " Reconstruction of the header file %s\n" ;
-  message += " with the following modules:\n" ;
-  
-  if(fClusterizer->IsActive()){
-    message += "   (+)   %s to branch %s\n" ;
-  }
-
-  if(fPID->IsActive()){
-    message += "   (+)   %s to branch %s\n" ;  
-  }
-  Info("Print", message.Data(), 
-       GetTitle(), 
-       fClusterizer->GetName(), fRecPointBranch.Data(), 
-       fPID->GetName(), fRecPartBranch.Data() ) ; 
-}
-
-//____________________________________________________________________________
-void AliEMCALReconstructioner::SetEventRange(Int_t first, Int_t last)
-{
-  // Set the event range to process
-  fFirstEvent=first; 
-  fLastEvent=last; 
-  fClusterizer->SetEventRange(fFirstEvent, fLastEvent) ; 
-  fPID->SetEventRange(fFirstEvent, fLastEvent) ;
-}
diff --git a/EMCAL/AliEMCALReconstructioner.h b/EMCAL/AliEMCALReconstructioner.h
deleted file mode 100644 (file)
index 2aac9b2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef ALIEMCALRECONSTRUCTIONER_H
-#define ALIEMCALRECONSTRUCTIONER_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//_________________________________________________________________________
-//  Wrapping class for reconstruction
-//*--
-//*-- Author: Yves Schutz (SUBATECH) 
-//*--         Dmitri Peressounko (SUBATECH & Kurchatov Institute)
-
-
-// --- ROOT system ---
-
-#include "TTask.h"
-class AliEMCALDigitizer ;
-class AliEMCALClusterizer ;
-class AliEMCALPID ;
-class AliEMCALSDigitizer ;
-class AliESD ;
-
-// --- Standard library ---
-
-// --- AliRoot header files ---
-
-class AliEMCALReconstructioner : public TTask {
-
-public:
-
-  AliEMCALReconstructioner() ; //ctor            
-  AliEMCALReconstructioner(const char * headerFile, const char * branchName = "Default");
-  AliEMCALReconstructioner(const AliEMCALReconstructioner & rec) : TTask(rec) {
-    // cpy ctor: 
-    // requested by the Coding Convention
-    Fatal("cpy ctor", "not implemented") ;
-  }
-   
-  virtual ~AliEMCALReconstructioner() ;
-
-  virtual void Exec(Option_t *) ;
-  void Clusters2Tracks(Int_t ievent, AliESD *event);
-
-  AliEMCALClusterizer       * GetClusterizer()const { return fClusterizer ; }
-  AliEMCALPID               * GetPID()        const { return fPID;          }
-  void SetEventRange(Int_t first=0, Int_t last=-1) ; 
-
-  void Print()const ;
-
-  AliEMCALReconstructioner & operator = (const AliEMCALReconstructioner & /*rvalue*/)  {
-    // assignement operator requested by coding convention but not needed
-    Fatal("operator =", "not implemented") ;
-    return *this ; 
-  }
-  
-private:
-  void Init() ;  
-
-private:
-  
-  TString  fRecPointBranch ;    // Title of RecPoints branch   
-  TString  fRecPartBranch ;     // Title of RecParticles branch 
-
-
-  AliEMCALClusterizer       * fClusterizer ; //! Pointer to AliEMCALClusterizer
-  AliEMCALPID               * fPID ;         //! Pointer to AliEMCALPID
-  Bool_t  fIsInitialized ; // kTRUE if reconstructioner is initialized
-  Int_t   fFirstEvent;        // first event to process
-  Int_t   fLastEvent;         // last  event to process
-
-  ClassDef(AliEMCALReconstructioner,1)  // Reconstruction algorithm class (Base Class)
-
-}; 
-
-#endif // ALIEMCALRECONSTRUCTIONER_H
diff --git a/EMCAL/AliEMCALReconstructor.cxx b/EMCAL/AliEMCALReconstructor.cxx
new file mode 100644 (file)
index 0000000..9026caf
--- /dev/null
@@ -0,0 +1,112 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+//_________________________________________________________________________
+//*--
+//*-- Yves Schutz (SUBATECH) 
+// Reconstruction class. Redesigned from the old AliReconstructionner class and 
+// derived from STEER/AliReconstructor. 
+// 
+// --- ROOT system ---
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliESD.h"
+#include "AliEMCALReconstructor.h"
+#include "AliEMCALClusterizerv1.h"
+#include "AliEMCALPIDv1.h"
+#include "AliEMCALGetter.h"
+
+ClassImp(AliEMCALReconstructor)
+
+//____________________________________________________________________________
+  AliEMCALReconstructor::AliEMCALReconstructor() : fDebug(kFALSE) 
+{
+  // ctor
+
+} 
+
+
+//____________________________________________________________________________
+AliEMCALReconstructor::~AliEMCALReconstructor()
+{
+  // dtor
+} 
+
+//____________________________________________________________________________
+void AliEMCALReconstructor::Reconstruct(AliRunLoader* runLoader) const 
+{
+  // method called by AliReconstruction; 
+  // Only the clusterization is performed,; the rest of the reconstruction is done in FillESD because the track
+  // segment maker needs access to the AliESD object to retrieve the tracks reconstructed by 
+  // the global tracking.
+  TString headerFile(runLoader->GetFileName()) ; 
+  TString branchName("Default") ;  
+  
+  AliEMCALClusterizerv1 clu(headerFile, branchName);
+  clu.SetEventRange(0, -1) ; // do all the events
+  if ( Debug() ) 
+    clu.ExecuteTask("deb all") ; 
+  else 
+    clu.ExecuteTask("") ;  
+
+  AliEMCALGetter::Instance()->EmcalLoader()->CleanReconstructioner();
+}
+
+//____________________________________________________________________________
+void AliEMCALReconstructor::FillESD(AliRunLoader* runLoader, AliESD* esd) const
+{
+  // Called by AliReconstruct after Reconstruct() and global tracking and vertxing 
+  //Creates the tracksegments and Recparticles
+  
+  TString headerFile(runLoader->GetFileName()) ; 
+  TString branchName("Default") ;  
+
+  AliEMCALPIDv1 pid(headerFile, branchName);
+
+  Int_t eventNumber = runLoader->GetEventNumber() ;
+  // do current event; the loop over events is done by AliReconstruction::Run()
+  Info("FillESD 1", "%d", eventNumber) ;
+  pid.SetEventRange(eventNumber, eventNumber) ; 
+  if ( Debug() ) 
+   pid.ExecuteTask("deb all") ;
+  else 
+    pid.ExecuteTask("") ;
+  
+  // Creates AliESDtrack from AliEMCALRecParticles 
+  AliEMCALGetter::Instance()->Event(eventNumber, "P") ; 
+  TClonesArray *recParticles = AliEMCALGetter::Instance()->RecParticles();
+  Int_t nOfRecParticles = recParticles->GetEntries();
+  for (Int_t recpart = 0 ; recpart < nOfRecParticles ; recpart++) {
+    AliEMCALRecParticle * rp = dynamic_cast<AliEMCALRecParticle*>(recParticles->At(recpart));
+    if (Debug()) 
+      rp->Print();
+    AliESDtrack * et = new AliESDtrack() ; 
+    // fills the ESDtrack
+    Double_t xyz[3];
+    for (Int_t ixyz=0; ixyz<3; ixyz++) 
+      xyz[ixyz] = rp->GetPos()[ixyz];
+    //et->SetEMCALposition(xyz) ; 
+    //et->SetEMCALsignal  (rp->Energy()) ; 
+    //et->SetEMCALpid     (rp->GetPID()) ;
+    // add the track to the esd object
+    esd->AddTrack(et);
+    delete et;
+  }
+}
diff --git a/EMCAL/AliEMCALReconstructor.h b/EMCAL/AliEMCALReconstructor.h
new file mode 100644 (file)
index 0000000..032f1cc
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef ALIEMCALRECONSTRUCTOR_H
+#define ALIEMCALRECONSTRUCTOR_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//_________________________________________________________________________
+//  Wrapping class for reconstruction
+//*--
+//*-- Author: Yves Schutz (SUBATECH) 
+//*--         Dmitri Peressounko (SUBATECH & Kurchatov Institute)
+
+
+// --- ROOT system ---
+
+#include "AliReconstructor.h" 
+class AliEMCALDigitizer ;
+class AliEMCALClusterizer ;
+class AliEMCALPID ;
+class AliEMCALSDigitizer ;
+class AliESD ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+
+class AliEMCALReconstructor : public AliReconstructor {
+
+public:
+
+  AliEMCALReconstructor() ; //ctor            
+  AliEMCALReconstructor(const AliEMCALReconstructor & rec) : AliReconstructor(rec) {
+    // cpy ctor: 
+    // requested by the Coding Convention
+    Fatal("cpy ctor", "not implemented") ;
+  }
+   
+  virtual ~AliEMCALReconstructor() ; //dtor
+
+  Bool_t                     Debug() const { return fDebug ; }
+  virtual void               FillESD(AliRunLoader* runLoader, AliESD* esd) const ;
+  virtual void               Reconstruct(AliRunLoader* runLoader) const ;
+
+  
+  AliEMCALReconstructor & operator = (const AliEMCALReconstructor & /*rvalue*/)  {
+    // assignement operator requested by coding convention but not needed
+    Fatal("operator =", "not implemented") ;
+    return *this ; 
+  }
+  
+
+private:
+  
+  Bool_t fDebug; //! verbosity controller
+  ClassDef(AliEMCALReconstructor,1)  // Reconstruction algorithm class (Base Class)
+
+}; 
+
+#endif // ALIEMCALRECONSTRUCTOR_H
index ce311ca..af734fe 100644 (file)
@@ -50,5 +50,5 @@
 #pragma link C++ class AliEMCALPID+;           
 #pragma link C++ class AliEMCALPIDv1+;
 #pragma link C++ class AliEMCALLoader+;        
-#pragma link C++ class AliEMCALReconstructioner+;
+#pragma link C++ class AliEMCALReconstructor+;
 #endif
index 045b6ee..fb940ba 100644 (file)
@@ -39,7 +39,7 @@ AliEMCALFastRecParticle.cxx \
 AliEMCALPID.cxx \
 AliEMCALPIDv1.cxx \
 AliEMCALLoader.cxx \
-AliEMCALReconstructioner.cxx
+AliEMCALReconstructor.cxx
 
 HDRS= $(SRCS:.cxx=.h)