/////////////////////////////////////////////////////////////////////////////// /// \class RAT::PhysicsListMessenger /// /// \brief The messenger class for the Physics List /// /// \author p.jones22@physics.ox.ac.uk /// /// REVISION HISTORY:\n /// 25/02/2011 : P G Jones - New File, based on PhysicsListMessenger /// in the Geant4.9.4 example directories.\n /// 31/08/2011 : P G Jones - Added Hadronic list selection\n /// 10/09/2012 : P G Jones - Added Cerenkov process selection\n /// 07/05/2013 : C R Jones - Major new additions to the Physics List commands\n /// 2014-08-05 : P G Jones - Switched to /rat/physics_list, added doxygen.\n /// /// \details Introduces commands to set the Em and Hadronic Physics Lists, to /// omit certain physics and set the secondary cut lengths. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_PhysicsListMessenger_hh__ #define __RAT_PhysicsListMessenger_hh__ #include #include class G4UIdirectory; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithABool; class G4UIcmdWithAnInteger; class G4UIcmdWithAString; class G4UIcommand; namespace RAT { class PhysicsList; class PhysicsListMessenger: public G4UImessenger { public: /// Construct the messenger with a pointer to the physics list it alters /// /// @param[in] physicsList instance target PhysicsListMessenger( PhysicsList* physicsList ); /// Destruct and delete commands ~PhysicsListMessenger(); /// Called by Geant4 when a command is invoked /// /// @param[in] cmd invoked /// @param[in] value set void SetNewValue( G4UIcommand* cmd, G4String value ); private: PhysicsList* fPhysicsList; ///< Pointer to the Physics List instance G4UIdirectory* fPhysDir; ///< The /rat/physics_list ui directory G4UIcmdWithABool* fOmitAllCmd; ///< Command to omit all physical processes from RAT. G4UIcmdWithABool* fOmitOpticalBoundaryEffects; ///< Command to omit optical boundary interactions G4UIcmdWithABool* fOmitOpticalAttenuationCmd; ///< Command to omit optical attenuation (absorption + rayleigh) G4UIcmdWithABool* fOmitOpticalAbsorptionCmd; ///< Command to omit optical absorption G4UIcmdWithABool* fOmitOpticalRayleighCmd; ///< Command to omit optical Rayleigh scattering G4UIcmdWithABool* fOmitOpticalMieCmd; ///< Command to omit optical Mie scattering G4UIcmdWithABool* fOmitHadronicCmd; ///< Command to omit all hadron interactions (EM+Hadronic) G4UIcmdWithABool* fOmitMuonicCmd; ///< Command to omit all muonic interactions (EM+Hadronic) G4UIcmdWithABool* fOmitHadronListCmd; ///< Command to omit the hadronic physics list G4UIcmdWithABool* fOmitCerenkovCmd; ///< Command to omit Cerenkov photon production G4UIcmdWithAnInteger* fCerenkovMaxNumPhotonsPerStepCmd; ///< Command to set the maximum number of Cerenkov photons produced per step G4UIcmdWithADoubleAndUnit* fTimeCutCmd; ///< Command to set the maximum time a track can exist for G4UIcmdWithADoubleAndUnit* fGammaCutCmd; ///< Command to set the minimum track length of a secondary gamma G4UIcmdWithADoubleAndUnit* fElectronCutCmd; ///< Command to set the minimum track length of a secondary electron G4UIcmdWithADoubleAndUnit* fMuonCutCmd; ///< Command to set the minimum track length of a secondary muon G4UIcmdWithADoubleAndUnit* fAllCutCmd; ///< Command to set the minimum track length of all secondaries G4UIcmdWithAString* fEMListCmd; ///< Command to choose the EM physics list G4UIcmdWithAString* fHadronicListCmd; ///< Command to choose the hadronic physics list G4UIcmdWithAString* fCerenkovProcessCmd; ///< Command to choose the Cerenkov model G4UIcmdWithAString* fOpRayleighProcessCmd; ///< Command to choose the Rayleigh model G4UIcommand* fPrintEletronicDEDXCmd; ///< Command to output the electronic dE/dx G4UIcommand* fPrintTotalDEDXCmd; ///< Comamnd to output the total dE/dx G4UIcommand* fPrintMeanPathCmd; ///< Command to print the mean free path (gammas). }; } //::RAT #endif