00001 // $Id: GiGaExternalPhysList.h,v 1.5 2007/03/26 09:01:39 gcorti Exp $ 00002 #ifndef GIGA_GIGAEXTERNALPHYSLIST_H 00003 #define GIGA_GIGAEXTERNALPHYSLIST_H 1 00004 00005 // Include files 00006 // GiGa 00007 #include "GiGa/GiGaPhysListBase.h" 00008 00021 template<class PHYSLIST> 00022 class GiGaExternalPhysList : 00023 virtual public GiGaPhysListBase , 00024 virtual public PHYSLIST 00025 { 00027 typedef GiGaExternalPhysList<PHYSLIST> MyType ; 00028 00029 public: 00030 00032 virtual void ConstructParticle () { PHYSLIST::ConstructParticle () ; } 00033 00035 virtual void ConstructProcess () { PHYSLIST::ConstructProcess () ; } 00036 00038 virtual void SetCuts () { PHYSLIST::SetCuts () ; } 00039 00040 protected: 00041 00056 GiGaExternalPhysList 00057 ( const std::string& type , 00058 const std::string& name , 00059 const IInterface* parent ) 00060 : GiGaPhysListBase ( type , name , parent ) 00061 , PHYSLIST () 00062 { 00063 // check for virtual inheritance 00064 // the following line COULD produce compiler warning 00065 // for CORRECT inheritance schema and 00066 // it MUST produce the compiler error 00067 // for INCORECT inheritance schema 00068 G4ParticleTable* tt = theParticleTable ; 00069 }; 00070 00072 virtual ~GiGaExternalPhysList(){}; 00073 00074 private: 00075 00077 GiGaExternalPhysList() ; 00078 00079 GiGaExternalPhysList ( const MyType& ) ; 00081 MyType& operator= ( const MyType& ) ; 00083 }; 00084 00085 #endif // GIGA_GIGAEXTERNALPHYSLIST_H