[286] | 1 | #include "ELYSE/PrimaryGeneratorMessenger.hh" |
---|
| 2 | |
---|
| 3 | //Geant4 |
---|
| 4 | #include "G4UIdirectory.hh" |
---|
| 5 | #include "G4UIcmdWithAString.hh" |
---|
| 6 | #include "G4UIcmdWith3Vector.hh" |
---|
| 7 | #include "G4UIcmdWithADoubleAndUnit.hh" |
---|
| 8 | #include "G4UIcmdWith3VectorAndUnit.hh" |
---|
| 9 | #include "G4ios.hh" |
---|
| 10 | |
---|
| 11 | //ELYSE |
---|
| 12 | #include "ELYSE/PrimaryGeneratorAction.hh" |
---|
| 13 | |
---|
| 14 | |
---|
| 15 | ELYSE::PrimaryGeneratorMessenger::PrimaryGeneratorMessenger(ELYSE::PrimaryGeneratorAction* pointerToAction) |
---|
| 16 | :myAction(pointerToAction) { |
---|
| 17 | |
---|
| 18 | ELYSEDir = new G4UIdirectory("/ELYSE/gun/"); |
---|
| 19 | ELYSEDir->SetGuidance("ELYSE gun control commands."); |
---|
| 20 | |
---|
| 21 | particleTypeCmd = new G4UIcmdWithAString("/ELYSE/gun/partName",this); |
---|
| 22 | particleTypeCmd->SetGuidance("Particle Name of the beam"); |
---|
| 23 | particleTypeCmd->SetParameterName("beampdg",false); |
---|
| 24 | |
---|
| 25 | energyCmd = new G4UIcmdWithADoubleAndUnit("/ELYSE/gun/energy",this); |
---|
| 26 | energyCmd->SetGuidance("The Energy of the beam"); |
---|
| 27 | energyCmd->SetParameterName("beamenergy",false); |
---|
| 28 | energyCmd->SetDefaultUnit("MeV"); |
---|
| 29 | |
---|
| 30 | beamDirectionCmd = new G4UIcmdWith3Vector("/ELYSE/gun/BeamDir",this); |
---|
| 31 | beamDirectionCmd->SetGuidance("Set the direction of the beam."); |
---|
| 32 | beamDirectionCmd->SetParameterName("beamdir_x","beamdir_y","beamdir_z",false); |
---|
| 33 | |
---|
| 34 | beamVertexCmd = new G4UIcmdWith3VectorAndUnit("/ELYSE/gun/vertex",this); |
---|
| 35 | beamVertexCmd->SetGuidance("Set the vertex of the beam."); |
---|
| 36 | beamVertexCmd->SetParameterName("vertex_x","vertex_y","vertex_z",false); |
---|
| 37 | beamVertexCmd->SetDefaultUnit("cm"); |
---|
| 38 | |
---|
| 39 | polarCmd = new G4UIcmdWith3Vector("/ELYSE/gun/OpPhotonPolarisation",this); |
---|
| 40 | polarCmd->SetGuidance("Set polarization direction"); |
---|
| 41 | polarCmd->SetParameterName("polar_x","polar_y","polar_z",false); |
---|
| 42 | |
---|
| 43 | }//Ctor |
---|
| 44 | |
---|
| 45 | //-------------------------------------------------------------------------------------------- |
---|
| 46 | |
---|
| 47 | ELYSE::PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger() { |
---|
| 48 | delete particleTypeCmd; |
---|
| 49 | delete energyCmd; |
---|
| 50 | delete beamDirectionCmd; |
---|
| 51 | delete beamVertexCmd; |
---|
| 52 | delete polarCmd; |
---|
| 53 | |
---|
| 54 | delete ELYSEDir; |
---|
| 55 | }//Dtor |
---|
| 56 | |
---|
| 57 | //-------------------------------------------------------------------------------------------- |
---|
| 58 | |
---|
| 59 | void ELYSE::PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { |
---|
| 60 | |
---|
| 61 | if( command == particleTypeCmd ) { |
---|
| 62 | myAction->SetBeamName(newValue); |
---|
| 63 | |
---|
| 64 | } else if ( command == energyCmd ) { |
---|
| 65 | myAction->SetBeamEnergy(energyCmd->GetNewDoubleValue(newValue)); |
---|
| 66 | |
---|
| 67 | } else if ( command == beamDirectionCmd ) { |
---|
| 68 | myAction->SetBeamDir(beamDirectionCmd->GetNew3VectorValue(newValue)); |
---|
| 69 | |
---|
| 70 | } else if ( command == beamVertexCmd ) { |
---|
| 71 | myAction->SetVtx(beamVertexCmd->GetNew3VectorValue(newValue)); |
---|
| 72 | |
---|
| 73 | } else if ( command == polarCmd ) { |
---|
| 74 | myAction->SetOptPhotonPolar(polarCmd->GetNew3VectorValue(newValue)); |
---|
| 75 | |
---|
| 76 | } |
---|
| 77 | |
---|
| 78 | }//SetNewValue |
---|
| 79 | |
---|
| 80 | //-------------------------------------------------------------------------------------------- |
---|
| 81 | |
---|