Addition of a new Reconstruction class (AliEMCALReconstructionner)
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Aug 2002 15:49:07 +0000 (15:49 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Aug 2002 15:49:07 +0000 (15:49 +0000)
and 2 macros using this class for testing the various (split or not) modes
for reconstruction

EMCAL/AliEMCALAnalyseTest.C [new file with mode: 0644]
EMCAL/AliEMCALReconstructionTest.C [new file with mode: 0644]
EMCAL/AliEMCALReconstructioner.cxx [new file with mode: 0644]
EMCAL/AliEMCALReconstructioner.h [new file with mode: 0644]
EMCAL/EMCALLinkDef.h
EMCAL/libEMCAL.pkg

diff --git a/EMCAL/AliEMCALAnalyseTest.C b/EMCAL/AliEMCALAnalyseTest.C
new file mode 100644 (file)
index 0000000..10f19e8
--- /dev/null
@@ -0,0 +1,75 @@
+void AliEMCALAnalyseTest(){
+
+  cout << "AliEMCAL:> Single File default reconstruction analysing" << endl ;
+  
+  AliEMCALGetter* gime=AliEMCALGetter::GetInstance("galice.root") ;  
+  gime->Event(0,"SDR") ;
+  
+  if((gime->TowerRecPoints()==0)||(gime->TowerRecPoints()->At(0)==0)){
+    cout << "        No TowerRecPoint  !!!!! " << endl ;
+  }    
+
+  if((gime->PreShowerRecPoints()==0)||(gime->CpvRecPoints()->At(0)==0)){
+    cout << "        No CpvRecPoint  !!!!! " << endl ;
+  } 
+   
+//   if((gime->TrackSegments()==0)||(gime->TrackSegments()->At(0)==0)){
+//     cout << "        No TrackSegments !!!! " << endl ;
+//   }    
+
+//   if((gime->RecParticles()==0)||(gime->RecParticles()->At(0)==0)){
+//     cout << "        No RecParticles !!!!! " << endl ;
+//   }    
+
+  cout << "AliEMCAL:> Single File default analysing finished" << endl ;
+
+
+  cout << "AliEMCAL:> Single File branch TEST analyzing started" << endl ;
+
+  gime=AliEMCALGetter::GetInstance("galice.root","test") ;  
+  gime->Event(0,"SDR") ;
+
+  if((gime->TowerRecPoints()==0)||(gime->TowerRecPoints()->At(0)==0)){
+    cout << "No TowerRecPoint " << endl ;
+  }    
+  
+  if((gime->PreShowerRecPoints()==0)||(gime->PreShowerRecPoints()->At(0)==0)){
+    cout << "No CpvRecPoint " << endl ;
+  }   
+  
+//   if((gime->TrackSegments()==0)||(gime->TrackSegments()->At(0)==0)){
+//     cout << "No TrackSegments " << endl ;
+//   }    
+
+//   if((gime->RecParticles()==0)||(gime->RecParticles()->At(0)==0)){
+//     cout << "No RecParticles " << endl ;
+//   }   
+  cout << "AliEMCAL:> Single File branch TEST reconstruction ended" << endl ;
+
+  
+  cout << "AliEMCAL:> Split File default reconstruction started" << endl ;
+  gime=AliEMCALGetter::GetInstance("galice.root","Default",kTRUE) ;  
+  gime->Event(0,"SDR") ;
+  if((gime->TowerRecPoints()==0)||(gime->TowerRecPoints()->At(0)==0)){
+    cout << "No TowerRecPoint " << endl ;
+  }    
+  if((gime->PreShowerRecPoints()==0)||(gime->PreShowerRecPoints()->At(0)==0)){
+    cout << "No PreShowerRecPoint " << endl ;
+  }    
+  
+  //  if((gime->TrackSegments()==0)||(gime->TrackSegments()->At(0)==0)){
+//     cout << "No TrackSegments " << endl ;
+//   }   
+//   if((gime->RecParticles()==0)||(gime->RecParticles()->At(0)==0)){
+//     cout << "No RecParticles " << endl ;
+//  }   
+  cout << "AliEMCAL:> Split File default reconstruction ended" << endl ;
+  
+  cout << "--------AliEMCAL:> Reconstruction OK------------------"<< endl ;
+  
+}
diff --git a/EMCAL/AliEMCALReconstructionTest.C b/EMCAL/AliEMCALReconstructionTest.C
new file mode 100644 (file)
index 0000000..5d85a86
--- /dev/null
@@ -0,0 +1,21 @@
+void AliEMCALReconstructionTest(){
+
+  cout << "AliEMCAL:> Single File default reconstruction started" << endl ;
+
+  AliEMCALReconstructioner a("galice.root") ;  //first -single file default reconstruction
+  a.ExecuteTask() ;
+  cout << "AliEMCAL:> Single File default reconstruction finished" << endl ;
+  cout << "AliEMCAL:> Single File branch TEST reconstruction started" << endl ;
+  AliEMCALReconstructioner a("galice.root","test") ;  //another branch single file recontruction
+  a.ExecuteTask() ;
+  cout << "AliEMCAL:> Single File branch TEST reconstruction ended" << endl ;
+  
+  cout << "AliEMCAL:> Split File default reconstruction started" << endl ;
+  AliEMCALReconstructioner a("galice.root","Default",kTRUE) ; //Split file default reconstruction
+  a.ExecuteTask() ;
+  cout << "AliEMCAL:> Split File default reconstruction ended" << endl ;
+  
+  cout << "--------AliEMCAL:> Reconstruction OK------------------"<< endl ;
+  
+}
diff --git a/EMCAL/AliEMCALReconstructioner.cxx b/EMCAL/AliEMCALReconstructioner.cxx
new file mode 100644 (file)
index 0000000..829dd5d
--- /dev/null
@@ -0,0 +1,217 @@
+/**************************************************************************
+ * 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 TrackSegments, 
+//  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, 
+//             // TS and RecParticles 
+//
+//             // And finally one can call ExecuteTask() with the following options
+//  root [5] r->ExecuteTask("debug all timing")
+//             // deb     - prints the numbers of produced SDigits, Digits etc.
+//             // deb all - prints in addition list of made SDigits, digits etc.
+//             // timing  - prints benchmarking results
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+// --- ROOT system ---
+
+#include "TClonesArray.h"
+#include "TROOT.h"
+#include "TTree.h"
+#include "TFile.h"
+
+// --- Standard library ---
+#include <iostream.h>   
+
+// --- AliRoot header files ---
+#include "AliRun.h"
+#include "AliEMCALReconstructioner.h"
+#include "AliEMCALClusterizerv1.h"
+#include "AliEMCALDigitizer.h"
+#include "AliEMCALSDigitizer.h"
+//#include "AliEMCALTrackSegmentMakerv1.h"
+//#include "AliEMCALPIDv1.h"
+//#include "AliEMCALFastRecParticle.h"
+//#include "AliEMCALCpvRecPoint.h"
+
+ClassImp(AliEMCALReconstructioner)
+
+//____________________________________________________________________________
+  AliEMCALReconstructioner::AliEMCALReconstructioner():TTask("AliEMCALReconstructioner","")
+{
+  // ctor
+  fToSplit = kFALSE ;
+  fDigitizer   = 0 ;
+  fClusterizer = 0 ;
+  //fTSMaker     = 0 ;
+  //fPID         = 0 ; 
+  fSDigitizer  = 0 ;
+  fHeaderFileName = "galice.root" ;
+
+  fIsInitialized = kFALSE ;
+
+} 
+
+//____________________________________________________________________________
+AliEMCALReconstructioner::AliEMCALReconstructioner(const char* headerFile,const char * branchName,Bool_t toSplit):
+TTask("AliEMCALReconstructioner","")
+{
+  // ctor
+  
+  fHeaderFileName = headerFile ;
+  fToSplit = toSplit ;
+  fSDigitsBranch= branchName; 
+  fSDigitizer  = new AliEMCALSDigitizer(fHeaderFileName.Data(),fSDigitsBranch.Data(),toSplit) ; 
+  Add(fSDigitizer) ;
+
+  fDigitsBranch=branchName ; 
+  fDigitizer   = new AliEMCALDigitizer(fHeaderFileName.Data(),fDigitsBranch.Data(),toSplit) ; 
+  Add(fDigitizer) ;
+
+
+  fRecPointBranch=branchName ; 
+  fClusterizer = new AliEMCALClusterizerv1(fHeaderFileName.Data(),fRecPointBranch.Data(),toSplit) ; 
+  Add(fClusterizer) ;
+  
+
+//   fTSBranch=branchName ; 
+//   fTSMaker     = new AliEMCALTrackSegmentMakerv1(fHeaderFileName.Data(),fTSBranch.Data(),toSplit) ;
+//   Add(fTSMaker) ;
+  
+  
+//   fRecPartBranch=branchName ; 
+//   fPID         = new AliEMCALPIDv1(fHeaderFileName.Data(),fRecPartBranch.Data(),toSplit) ;
+//   Add(fPID) ;
+  
+  fIsInitialized = kTRUE ;
+  
+} 
+//____________________________________________________________________________
+void AliEMCALReconstructioner::Exec(Option_t *option)
+{
+  //chesk, if the names of branches, which should be made conicide with already
+  //existing
+  if(!fIsInitialized)
+    Init() ;
+}
+
+//____________________________________________________________________________
+ void AliEMCALReconstructioner::Init()
+{
+  // initiliaze Reconstructioner if necessary: we can not do this in default constructor
+
+  if(!fIsInitialized){
+    // Initialisation
+
+    fSDigitsBranch="Default" ; 
+    fSDigitizer  = new AliEMCALSDigitizer(fHeaderFileName.Data(),fSDigitsBranch.Data(),fToSplit) ; 
+    Add(fSDigitizer) ;
+
+    fDigitsBranch="Default" ; 
+    fDigitizer   = new AliEMCALDigitizer(fHeaderFileName.Data(),fDigitsBranch.Data(),fToSplit) ; 
+    Add(fDigitizer) ;
+
+    fRecPointBranch="Default" ; 
+    fClusterizer = new AliEMCALClusterizerv1(fHeaderFileName.Data(),fRecPointBranch.Data(),fToSplit) ; 
+    Add(fClusterizer) ;
+
+//     fTSBranch="Default" ; 
+//     fTSMaker     = new AliEMCALTrackSegmentMakerv1(fHeaderFileName.Data(),fTSBranch.Data(),fToSplit) ;
+//     Add(fTSMaker) ;
+
+
+//     fRecPartBranch="Default" ; 
+//     fPID         = new AliEMCALPIDv1(fHeaderFileName.Data(),fRecPartBranch.Data(),fToSplit) ;
+//     Add(fPID) ;
+    
+    fIsInitialized = kTRUE ;
+  }
+} 
+//____________________________________________________________________________
+AliEMCALReconstructioner::~AliEMCALReconstructioner()
+{
+  // Delete data members if any
+
+} 
+
+//____________________________________________________________________________
+
+void AliEMCALReconstructioner::Print(Option_t * option)const {
+  // Print reconstructioner data  
+
+  cout << "-----------------AliEMCALReconstructioner---------------" << endl ;
+  cout << " Reconstruction of the header file " <<fHeaderFileName.Data() << endl ;
+  cout << " with the following modules: " << endl ;
+
+  if(fSDigitizer->IsActive()){
+    cout << "   (+)   " << fSDigitizer->GetName() << " to branch : " << fSDigitsBranch.Data() << endl ; 
+    cout << endl ;
+  }
+  if(fDigitizer->IsActive()){
+    cout << "   (+)   " << fDigitizer->GetName() << " to branch : " << fDigitsBranch.Data() << endl ;  
+    cout <<  endl ;
+  }
+  
+  if(fClusterizer->IsActive()){
+    cout << "   (+)   " <<fClusterizer->GetName() << " to branch : " <<fRecPointBranch.Data()  << endl ;  
+    cout <<  endl ;
+  }
+
+//   if(fTSMaker->IsActive()){
+//     cout << "   (+)   " << fTSMaker->GetName() << " to branch : " << fTSBranch.Data() << endl ;  
+//     cout <<  endl ;
+//   }
+
+
+//   if(fPID->IsActive()){
+//     cout << "   (+)   " << fPID->GetName() << " to branch : " <<fRecPartBranch.Data()  << endl ;  
+//     cout <<  endl ;
+//   }
+
+
+}
diff --git a/EMCAL/AliEMCALReconstructioner.h b/EMCAL/AliEMCALReconstructioner.h
new file mode 100644 (file)
index 0000000..715e625
--- /dev/null
@@ -0,0 +1,86 @@
+#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: Gines Martinez & Yves Schutz (SUBATECH) 
+//*--         Dmitri Peressounko (SUBATECH & Kurchatov Institute)
+
+#include <stdlib.h>
+
+// --- ROOT system ---
+
+#include "TTask.h"
+class AliEMCALDigitizer ;
+class AliEMCALClusterizer ;
+//class AliEMCALTrackSegmentMaker ;
+class AliEMCALPID ;
+class AliEMCALSDigitizer ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+
+class AliEMCALReconstructioner : public TTask {
+
+public:
+
+  AliEMCALReconstructioner() ; //ctor            
+  AliEMCALReconstructioner(const char * headreFile, const char * branchName = "Default",Bool_t toSplit = kFALSE) ;
+  AliEMCALReconstructioner(const AliEMCALReconstructioner & rec) {
+    // cpy ctor: 
+    // requested by the Coding Convention
+    abort() ; 
+  }
+   
+  virtual ~AliEMCALReconstructioner() ;
+
+  virtual void Exec(Option_t * option) ;
+
+  AliEMCALDigitizer         * GetDigitizer()  const { return fDigitizer   ; }
+  AliEMCALClusterizer       * GetClusterizer()const { return fClusterizer ; }
+  //AliEMCALPID               * GetPID()        const { return fPID;          }
+  //AliEMCALTrackSegmentMaker * GetTSMaker()    const { return fTSMaker ;     }
+  AliEMCALSDigitizer        * GetSDigitizer() const { return fSDigitizer  ; }
+
+  void Print(Option_t * option)const ;
+  
+  AliEMCALReconstructioner & operator = (const AliEMCALReconstructioner & rvalue)  {
+    // assignement operator requested by coding convention but not needed
+    abort() ;
+    return *this ; 
+  }
+  
+
+private:
+  void Init() ;  
+
+private:
+  
+  Bool_t   fToSplit ; 
+  TString  fHeaderFileName ;    // File with headers and gAlice
+  TString  fDigitsBranch ;      // Title of digits branch
+  TString  fRecPointBranch ;    // Title of RecPoints branch   
+  TString  fTSBranch  ;         // Title of TrackSegments branch
+  TString  fRecPartBranch ;     // Title of RecParticles branch 
+  TString  fSDigitsBranch ;     // Title of SDigits branch      
+
+
+  AliEMCALDigitizer         * fDigitizer ;   //! Pointer to AliEMCALDigitizer
+  AliEMCALClusterizer       * fClusterizer ; //! Pointer to AliEMCALClusterizer
+  //AliEMCALPID               * fPID ;         //! Pointer to AliEMCALPID
+  //AliEMCALTrackSegmentMaker * fTSMaker ;     //! Pointer to AliEMCALTrackSegmentMaker
+  AliEMCALSDigitizer        * fSDigitizer ;  //! Pointer to AliEMCALSDigitizer
+
+  Bool_t   fIsInitialized ; // kTRUE if reconstructioner is initialized
+  ClassDef(AliEMCALReconstructioner,1)  // Reconstruction algorithm class (Base Class)
+
+}; 
+
+#endif // ALIEMCALRECONSTRUCTIONER_H
index 385adfd..65866cb 100644 (file)
@@ -24,5 +24,6 @@
 #pragma link C++ class AliEMCALFast+;
 #pragma link C++ class AliEMCALHadronCorrection+;               
 #pragma link C++ class AliEMCALHadronCorrectionv0+;             
-#pragma link C++ class AliEMCALParton+;                 
+#pragma link C++ class AliEMCALParton+;                
+#pragma link C++ class AliEMCALReconstructioner+;              
 #endif
index 727ee56..94d82f8 100644 (file)
@@ -21,7 +21,8 @@ AliEMCALClusterizerv1.cxx \
 AliEMCALHadronCorrection.cxx \
 AliEMCALHadronCorrectionv0.cxx \
 AliEMCALJetMicroDst.cxx \
-AliEMCALParton.cxx
+AliEMCALParton.cxx \
+AliEMCALReconstructioner.cxx
 
 HDRS= $(SRCS:.cxx=.h)