00001 // ================================================ 00002 // IReconstructedParticleMaker class description 00003 // ================================================ 00004 // 00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT 00006 // 00007 // 00008 // This version.... 00009 // 00010 // 00011 // Namespace ATLFast:: 00012 // 00013 // class: IReconstructedParticleMaker 00014 // 00015 // Description: 00016 // 00017 // Interface for algorithms which know how to make particles based on 00018 // HepMC particles by applying smearing and making cuts. 00019 // 00020 // 00021 // Authors: Hywel Phillips, Peter Clarke, Peter Sherwood, Richard 00022 // Steward, Elzbieta Richter-Was 00023 // ................................................................ 00024 // 00025 00026 #ifndef __ATLFAST_ireconstructedparticlemaker__ 00027 #define __ATLFAST_ireconstructedparticlemaker__ 00028 00029 // STL 00030 #include <vector> 00031 00032 // Gaudi 00033 //include "GaudiKernel/ISvcLocator.h" 00034 #include "GaudiKernel/IAlgorithm.h" 00035 //include "GaudiKernel/MsgStream.h" 00036 //include "GaudiKernel/DataObject.h" 00037 00038 // Other 00039 #include "CLHEP/Vector/LorentzVector.h" 00040 //include "HepMC/GenEvent.h" 00041 #include "HepMC/GenParticle.h" 00042 00043 // Atlfast 00044 #include "AtlfastCode/ReconstructedParticle.h" 00045 00046 //*************************************************************** 00047 // IReconstructedParticleMaker class declaration 00048 // 00049 // A "Gaudi algorithm" is something which gets scheduled and controlled 00050 // by the framework. In its simplest definition it is something which 00051 // - gets clled for each event 00052 // - can get anything it wants out of the Transient Event Store" 00053 // - can put anything it makes into the store. 00054 // 00055 // It must inherit from the Algorithm base class 00056 //**************************************************************** 00057 00058 namespace Atlfast { 00059 00060 class IReconstructedParticleMaker : virtual public IAlgorithm 00061 { 00062 00063 public: 00064 //------------------------------------------------------------------------ 00065 // typedefs of collections and iterators used locally by this class 00066 //------------------------------------------------------------------------ 00067 00068 typedef std::vector<HepMC::GenParticle*> t_MC_particleCollection ; 00069 typedef std::vector<HepMC::GenParticle*>::iterator t_MC_particleIterator ; 00070 00071 00072 //------------------------------------------------------------------------ 00073 // Methods used to make Reconstructed Particles from HepMC Particles 00074 //------------------------------------------------------------------------ 00075 00076 virtual bool getMC( t_MC_particleCollection& ) = 0; 00077 virtual ReconstructedParticle* create( HepMC::GenParticle* ) = 0; 00078 virtual bool isAcceptable( ReconstructedParticle* ) = 0; 00079 virtual StatusCode store( t_reconstructedParticleCollection* ) = 0; 00080 00081 }; 00082 00083 00084 } //end of namespace bracket 00085 00086 #endif 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097