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 "AtlfastCode/IKinematic.h"
00049 #include "AtlfastCode/TrackTrajectory.h"
00050 #include "AtlfastCode/Track.h"
00051 #include "AtlfastCode/TrackCollection.h"
00052 #include "AtlfastCode/TrackSmearer.h"
00053 #include "AtlfastCode/TesIO.h"
00054 #include "AtlfastCode/HeaderPrinter.h"
00055 #include "AtlfastCode/MCparticleCollection.h"
00056 
00057 //*************************************
00058 //Default parameters private to this algorithm
00059 //*************************************
00060 
00061 #define DEFAULT_mcPtMin     0.5   // Minimum pT  (applied to MC truth)
00062 #define DEFAULT_mcEtaMax    2.5   // Maximum eta (applied to MC truth) 
00063 #define DEFAULT_vtMax       3.0   // Maximum Vertex(trans)
00064 #define DEFAULT_vlMax       40.0  // Maximum Vertex(long) 
00065 #define DEFAULT_doSmearing  true  // Should the particle four vectors be smeared or not?
00066 #define DEFAULT_bField      2.0   // magnetic field in Tesla
00067  
00068 //htp random number generator should eventually be removed
00069 #define DEFAULT_muConfig    "000"
00070 
00071 
00072 //*****************************************
00073 // Default paths in the Transient event store to get/put entities
00074 //
00075 //[Note:  This will change ]
00076 //******************************************
00077 #define DEFAULT_MC_eventLocation    "/Event/McEventCollection" 
00078 #define DEFAULT_outputLocation      "/Event/AtlfastTracks" 
00079 
00080 
00081 
00082 //***************************************************************
00083 // TrackMaker class declaration
00084 //
00085 //****************************************************************
00086 namespace HepMC_helper{
00087   class IMCselector;
00088 }
00089 namespace Atlfast {
00090 
00091 class TrackMaker : public Algorithm
00092 {
00093 
00094  public:
00095 
00096   //-------------------------
00097   // Constructors/Destructors
00098   //-------------------------
00099 
00100   TrackMaker( const std::string& name, ISvcLocator* pSvcLocator ) ; 
00101   virtual ~TrackMaker();
00102 
00103 
00104   //------------------------------------------------------
00105   // Methods used by Gaudi to run the algorithm
00106   //------------------------------------------------------
00107 
00108   virtual StatusCode initialize() ;
00109   virtual StatusCode execute() ;
00110   virtual StatusCode finalize() ;
00111 
00112 
00113  private:
00114 
00115   // -------------------------------
00116   // Parameters of this algorithm
00117   // (descriptions above)
00118   //--------------------------------
00119   double        m_vlMax;
00120   double        m_vtMax;
00121   double        m_mcPtMin;     
00122   double        m_mcEtaMax;       
00123   bool          m_doSmearing;
00124   double        m_bField ;
00125   string        m_muConfig;
00126 
00127 
00128 
00129   //--------------------------------------------
00130   // Selector for HepMC generator particles
00131   //---------------------------------------------
00132 
00133 
00137   TesIO* m_tesIO;
00138   HepMC_helper::IMCselector*  m_ncutter ;
00139 
00140   //--------------------------------------------
00141   // Smearer helper class which knows all about how to do smearing
00142   // for Tracks
00143   // There may need to be more of these added in order
00144   // to treat different species differently.
00145   // Alternately the single smearer object could be made to
00146   // dispatch on particle type. Not thought through yet.
00147   //---------------------------------------------
00148 
00149 
00153   TrackSmearer* m_smearer;
00154   HepMC::ParticleDataTable m_particleTable;
00155 
00156 
00157   //--------------------------------------------------
00158   // Paths in the Transient Event store to get/put things
00159   // These are currently set in member variables so that
00160   // they can be overwritten by the job options service
00161   //--------------------------------------------------
00162 
00164   std::string m_MC_eventLocation ;
00165   std::string m_outputLocation ;
00166 
00167 
00168   //-------------------------------
00169   // Private methods
00170   //-------------------------------
00171 
00172   // Create a Track 
00173   virtual Track* create( const HepMC::GenParticle* );
00174 
00175 
00176   // Test if Track passes kinematic requirements
00177   //  virtual bool isAcceptable( Track* );
00178   virtual bool isAcceptable(Track*);
00179   TrackTrajectory extractTrajectory( const HepMC::GenParticle* ) ;
00180 
00181 };
00182 
00183 
00184 }  //end of namespace bracket
00185 
00186 #endif
00187 
00188 
00189 
00190 
00191 
00192 
00193 
00194 
00195 
00196 
00197 

Generated on Thu Feb 21 14:30:47 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001