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

Generated on Tue Mar 18 11:18:25 2003 for AtlfastAlgs by doxygen1.3-rc1