//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//* // LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION // // ID : LEMuSRParticleGunMessenger.hh , v 1.2 // AUTHOR: Taofiq PARAISO // DATE : 2004-08-20 10:48 //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$// // // & &&&&&&&&&& &&&&&&& &&&&&&&& // & & && && & && // & & & & & & && // & &&&&&&& & & &&&&&& &&&&&&&& // & & & && & & && // & & && & & && && & & // &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & && // & // & // & // & // PARTICLE GUN MESSENGER //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$// #ifndef LEMUSRPARTICLEGUNMESSENGER #define LEMUSRPARTICLEGUNMESSENGER 1 class LEMuSRParticleGun; class G4ParticleTable; class G4UIcommand; class G4UIdirectory; class G4UIcmdWithoutParameter; class G4UIcmdWithAString; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWith3Vector; class G4UIcmdWith3VectorAndUnit; class G4UIcmdWithAnInteger; #include "G4UImessenger.hh" #include "globals.hh" /** * The LEMuSRParticleGunMessenger class defines the terminal's commands to operate changes in the initial conditions of the muon beam. The following settings can be personalized: * -# particle to shoot * -# initial direction of the momentum * -# initial energy * -# initial position * -# initial polarization * . * The directory lemuGun/ is completed in the LEMuSRPgaMessenger class. There one can find commands * for shooting particles randomly, with specified energy distribution etc. */ class LEMuSRParticleGunMessenger : public G4UImessenger { public: //!ct LEMuSRParticleGunMessenger(LEMuSRParticleGun* gun); //! dt ~LEMuSRParticleGunMessenger(); public: void SetNewValue(G4UIcommand * command,G4String newValues); G4String GetCurrentValue(G4UIcommand * command); private: void IonCommand(G4String newValues); private: LEMuSRParticleGun* fParticleGun; G4ParticleTable * particleTable; private: //commands G4UIdirectory * gunDirectory; G4UIcmdWithoutParameter * listCmd; G4UIcmdWithAString * particleCmd; G4UIcmdWith3Vector * directionCmd; G4UIcmdWithADoubleAndUnit * energyCmd; G4UIcmdWith3VectorAndUnit * positionCmd; G4UIcmdWithADoubleAndUnit * timeCmd; G4UIcmdWith3Vector * polCmd; G4UIcmdWithAnInteger * numberCmd; G4UIcommand * ionCmd; private: // for ion shooting G4bool fShootIon; G4int fAtomicNumber; G4int fAtomicMass; G4int fIonCharge; G4double fIonExciteEnergy; }; #endif