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

Generated on Mon Sep 24 14:19:11 2007 for AtlfastAlgs by  doxygen 1.5.1