00001 #ifndef TRACKTOOLS_TRUESTATECREATOR_H 00002 #define TRACKTOOLS_TRUESTATECREATOR_H 1 00003 00004 // Include files 00005 // ------------- 00006 // from Gaudi 00007 #include "GaudiAlg/GaudiTool.h" 00008 00009 // from Event 00010 #include "Event/MCParticle.h" 00011 #include "Event/MCHit.h" 00012 #include "Event/MCVeloHit.h" 00013 00014 // from Det 00015 #include "VeloDet/DeVelo.h" 00016 00017 // from LHCbKernel 00018 #include "Relations/IAssociator.h" 00019 00020 // from LHChInterfacces 00021 #include "Tools/ITrackExtrapolator.h" 00022 00023 // from TrackTools 00024 #include "TrackTools/IStateCreator.h" 00025 00026 class State; 00027 00046 class TrueStateCreator: public GaudiTool, 00047 virtual public IStateCreator { 00048 public: 00050 typedef IAssociator<MCParticle, MCHit> MCHitAsct; 00051 typedef IAssociator<MCParticle, MCVeloHit> MCVeloHitAsct; 00052 00054 TrueStateCreator( const std::string& type, 00055 const std::string& name, 00056 const IInterface* parent ); 00057 00059 virtual ~TrueStateCreator(); 00060 00062 virtual StatusCode initialize(); 00063 00071 virtual StatusCode createState( const MCParticle* mcPart, 00072 double zRec, 00073 State*& pState ) const; 00074 00081 virtual StatusCode createStateVertex( const MCParticle* mcPart, 00082 State*& pState ) const; 00083 private: 00084 00086 double qOverP( const MCParticle* mcPart ) const; 00087 00088 DeVelo* m_velo; 00089 00090 MCVeloHitAsct* m_p2VeloHitAsct; 00091 MCHitAsct* m_p2ITHitAsct; 00092 MCHitAsct* m_p2OTHitAsct; 00093 00094 ITrackExtrapolator* m_extrapolator; 00095 00096 // Job options: 00097 std::string m_p2VeloHitAsctName; 00098 std::string m_p2ITHitAsctName; 00099 std::string m_p2OTHitAsctName; 00100 std::string m_extrapolatorName; 00101 double m_eX2; 00102 double m_eY2; 00103 double m_eTx2; 00104 double m_eTy2; 00105 double m_eP; 00106 }; 00107 00108 00109 #endif // TRACKTOOLS_TRUESTATECREATOR_H