#ifndef _tls_G4VPhysicsListCustomization_h #define _tls_G4VPhysicsListCustomization_h #include #include #include class G4UImanager; namespace tls { /** \class G4VPhysicsListCustomization \brief Class to specify customization of the standard global PhysicsList that are handled by the Geant4Manager. This is the class one has to implement in order to specify a custom physics list. It provides methods to construct processes and particles, and methods to customize cuts or enable/disable processes. It is important that DeactivateCustomProcesses exactly undoes whatever is done in ActivateCustomProcesses. \author Martin Maur \author Javier Gonzalez \date 15 May 2012 \ingroup geant4 */ class G4VPhysicsListCustomization: public virtual G4VUserPhysicsList { public: G4VPhysicsListCustomization(const G4String& name =""): G4VUserPhysicsList(), fName(name) { } virtual ~G4VPhysicsListCustomization(){} public: //! \name G4VUserPhysicsList methods //@{ /// Set the cuts. This method is never called. virtual void SetCuts()=0; /// Construct particles virtual void ConstructParticle()=0; /// Construct processes virtual void ConstructProcess()=0; //@} //not implemented for now, all particles should be added in the GlobalPhysicsList, if needed they can be constructed with all processes disabled by default // virtual void ConstructCustomParticle(); //! \name Methods specific to G4VPhysicsListCustomization //@{ virtual void SetCustomCuts()=0; virtual bool ActivateCustomProcesses()=0; virtual bool InactivateCustomProcesses()=0; //@} protected: G4UImanager* fUImanager; private: G4String fName; }; } #endif