00001 #ifndef ATLFAST_ITRANSPORTEDPARTICLEFACTORY_H 00002 #define ATLFAST_ITRANSPORTEDPARTICLEFACTORY_H 00003 00004 #include "AtlfastEvent/ITransportedParticle.h" 00005 #include "HepMC/GenParticle.h" 00006 00007 #include <vector> 00008 00009 namespace Atlfast{ 00010 00011 // Define a unary predicate object type: 00012 class IsThisAMonopole{ 00013 public: 00014 IsThisAMonopole(int id):m_id(id){}; 00015 // operator() will return true if the absolute values for 00016 // the input particle and monopoleID are equal 00017 bool operator()(int id) const { return id*id == m_id*m_id; } 00018 private: 00019 int m_id; 00020 }; 00021 00022 class ITransportedParticleFactory { 00023 public: 00024 ITransportedParticleFactory(){}; 00025 ~ITransportedParticleFactory(){}; 00026 static ITransportedParticle* create(const HepMC::GenParticle* const &gen_particle, const std::vector<int>&); 00027 }; 00028 00029 } 00030 00031 #endif