Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

TrackMaker.h

Go to the documentation of this file.
00001 // ================================================
00002 // TrackMaker 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: TrackMaker
00014 //
00015 // Description: 
00016 //
00017 //  Default Algorithm which knows how to simulate Tracks from MC truth 
00018 //
00019 //
00020 //
00021 // ................................................................
00022 //
00023 
00024 #ifndef ATLFAST_TRACKMAKER_H
00025 #define ATLFAST_TRACKMAKER_H
00026 
00027 // STL
00028 #include <vector>
00029 #include <string>
00030 
00031 // Gaudi 
00032 #include "GaudiKernel/ISvcLocator.h"
00033 #include "GaudiKernel/IAlgorithm.h"
00034 #include "GaudiKernel/Algorithm.h"
00035 #include "GaudiKernel/MsgStream.h"
00036 #include "GaudiKernel/DataObject.h"
00037 
00038 // Other
00039 #include "CLHEP/Vector/LorentzVector.h"
00040 #include "CLHEP/Vector/ThreeVector.h"
00041 #include "HepMC/GenEvent.h"
00042 #include "HepMC/GenParticle.h"
00043 #include "HepMC/ParticleDataTable.h"
00044 #include "HepMC/IO_PDG_ParticleDataTable.h"
00045 
00046 
00047 // Atlfast
00048 #include "AtlfastEvent/IKinematic.h"
00049 #include "AtlfastAlgs/TrackTrajectory.h"
00050 #include "AtlfastEvent/Track.h"
00051 #include "AtlfastEvent/TrackCollection.h"
00052 #include "AtlfastAlgs/TrackSmearer.h"
00053 #include "AtlfastUtils/TesIO.h"
00054 #include "AtlfastUtils/HeaderPrinter.h"
00055 #include "AtlfastEvent/MCparticleCollection.h"
00056 //***************************************************************
00057 // TrackMaker class declaration
00058 //
00059 //****************************************************************
00060 namespace HepMC_helper{
00061   class IMCselector;
00062 }
00063 namespace Atlfast {
00064   using std::string;
00065   
00066   class TrackMaker : public Algorithm{
00067     
00068   public:
00069     
00070     //-------------------------
00071     // Constructors/Destructors
00072     //-------------------------
00073     
00074     TrackMaker( const std::string& name, ISvcLocator* pSvcLocator ) ; 
00075     virtual ~TrackMaker();
00076     
00077     
00078     //------------------------------------------------------
00079     // Methods used by Gaudi to run the algorithm
00080     //------------------------------------------------------
00081     
00082     virtual StatusCode initialize() ;
00083     virtual StatusCode execute() ;
00084     virtual StatusCode finalize() ;
00085     
00086     
00087   private:
00088     
00089     // -------------------------------
00090     // Parameters of this algorithm
00091     // (descriptions above)
00092     //--------------------------------
00093     double        m_vlMax;
00094     double        m_vtMax;
00095     double        m_mcPtMin;     
00096     double        m_mcEtaMax;       
00097     bool          m_doSmearing;
00098     double        m_bField ;
00099     string        m_muConfig;
00100     
00101     
00102     
00103     //--------------------------------------------
00104     // Selector for HepMC generator particles
00105     //---------------------------------------------
00106     
00107     
00108     TesIO* m_tesIO;
00109     HepMC_helper::IMCselector*  m_ncutter ;
00110     
00111     //--------------------------------------------
00112     // Smearer helper class which knows all about how to do smearing
00113     // for Tracks
00114     // There may need to be more of these added in order
00115     // to treat different species differently.
00116     // Alternately the single smearer object could be made to
00117     // dispatch on particle type. Not thought through yet.
00118     //---------------------------------------------
00119     
00120     
00121     TrackSmearer* m_smearer;
00122     HepMC::ParticleDataTable m_particleTable;
00123     
00124     
00125     //--------------------------------------------------
00126     // Paths in the Transient Event store to get/put things
00127     // These are currently set in member variables so that
00128     // they can be overwritten by the job options service
00129     //--------------------------------------------------
00130  
00131     // TES output location 
00132     std::string m_MC_eventLocation ;
00133     std::string m_outputLocation ;
00134     
00135     //-------------------------------
00136     // Private methods
00137     //-------------------------------
00138     
00139     // Create a Track 
00140     virtual Track* create( const HepMC::GenParticle* );
00141     
00142     
00143     // Test if Track passes kinematic requirements
00144     //  virtual bool isAcceptable( Track* );
00145     virtual bool isAcceptable(Track*);
00146     TrackTrajectory extractTrajectory( const HepMC::GenParticle* ) ;
00147   };
00148 
00149 }  //end of namespace bracket
00150 
00151 #endif
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160 
00161 
00162 

Generated on Wed May 1 14:11:32 2002 for AtlfastAlgs by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001