Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // G4AdjointSimMessenger 26 // G4AdjointSimMessenger 27 // 27 // 28 // Class description: 28 // Class description: 29 // 29 // 30 // This class represents the Messenger that de 30 // This class represents the Messenger that defines the G4UI macro commands 31 // allowing the user controlling an adjoint/re 31 // allowing the user controlling an adjoint/reverse MC simulation. It calls 32 // methods of G4AdjointSimManager. 32 // methods of G4AdjointSimManager. 33 // 33 // 34 // 1) Start an adjoint simulation 34 // 1) Start an adjoint simulation 35 // ------------------------------------------- 35 // --------------------------------------------------- 36 // Command: 36 // Command: 37 // -/adjoint/start_run nb: Start an adjoint s 37 // -/adjoint/start_run nb: Start an adjoint simulation with a number of 38 // events given by nb 38 // events given by nb. 39 // 2) Definition of the external source 39 // 2) Definition of the external source 40 // ------------------------------------------- 40 // --------------------------------------------------- 41 // The external source represents the real ext 41 // The external source represents the real external source of particles till 42 // which adjoint particles are tracked in the 42 // which adjoint particles are tracked in the reverse tracking mode of the 43 // simulation (see G4AdjointSimManager.hh and 43 // simulation (see G4AdjointSimManager.hh and G4Application Developer guide for 44 // more infos). The user can define the source 44 // more infos). The user can define the source as the external surface of a 45 // sphere or of G4 volume of the geometry. He 45 // sphere or of G4 volume of the geometry. He can also set the maximum energy 46 // of the source. If an adjoint particle get a 46 // of the source. If an adjoint particle get an energy higher than this maximum 47 // energy before reaching the external surface 47 // energy before reaching the external surface source it is killed without 48 // being registered. 48 // being registered. 49 // Commands: 49 // Commands: 50 // -/adjoint/DefineSphericalExtSource R X Y Z 50 // -/adjoint/DefineSphericalExtSource R X Y Z unit_length 51 // The external source is set on a sphere wi 51 // The external source is set on a sphere with radius R and centered on 52 // position (X,Y,Z) 52 // position (X,Y,Z) 53 // -/adjoint/DefineSphericalExtSourceCentered 53 // -/adjoint/DefineSphericalExtSourceCenteredOnAVolume pvol_name R unit_length 54 // The external source is set on a sphere wi 54 // The external source is set on a sphere with radius R and with its center 55 // position located at the center of the phy 55 // position located at the center of the physical volume specified by the 56 // name pvol_name. 56 // name pvol_name. 57 // -/adjoint/DefineExtSourceOnExtSurfaceOfAVo 57 // -/adjoint/DefineExtSourceOnExtSurfaceOfAVolume pvol_name 58 // The external surface is set as the extern 58 // The external surface is set as the external boundary of a the physical 59 // volume with name pvol_name. 59 // volume with name pvol_name. 60 // -/adjoint/SetExtSourceEmax Emax energy_uni 60 // -/adjoint/SetExtSourceEmax Emax energy_unit 61 // Set the maximum energy of the external so 61 // Set the maximum energy of the external source. 62 // 62 // 63 // 3) Definition of the adjoint source 63 // 3) Definition of the adjoint source 64 // ------------------------------------------- 64 // --------------------------------------------------- 65 // The adjoint source represents the source fr 65 // The adjoint source represents the source from which adjoint primary 66 // particles are generated (see G4AdjointSimMa 66 // particles are generated (see G4AdjointSimManager.hh and G4Application 67 // Developer guide for more infos). 67 // Developer guide for more infos). 68 // The user can define the source as the exter 68 // The user can define the source as the external surface of a sphere or of 69 // G4 volume of the geometry. He sets the mini 69 // G4 volume of the geometry. He sets the minimum maximum energy of the 70 // source and defines which type of adjoint pr 70 // source and defines which type of adjoint primary particles should be 71 // considered. 71 // considered. 72 // Commands: 72 // Commands: 73 // -/adjoint/DefineSphericalAdjSource R X Y Z 73 // -/adjoint/DefineSphericalAdjSource R X Y Z unit_length 74 // The adjoint source is set on a sphere with 74 // The adjoint source is set on a sphere with radius R and centered on 75 // position (X,Y,Z) 75 // position (X,Y,Z) 76 // -/adjoint/DefineSphericalAdjSourceCenteredO 76 // -/adjoint/DefineSphericalAdjSourceCenteredOnAVolume pvol_name R unit_length 77 // The external source is set on a sphere wit 77 // The external source is set on a sphere with radius R and with its center 78 // position located at the center of the phys 78 // position located at the center of the physical volume specified by the 79 // name pvol_name. 79 // name pvol_name. 80 // -/adjoint/DefineAdjSourceOnExtSurfaceOfAVol 80 // -/adjoint/DefineAdjSourceOnExtSurfaceOfAVolume pvol_name 81 // The external surface is set as the externa 81 // The external surface is set as the external boundary of a the 82 // physical volume with name pvol_name 82 // physical volume with name pvol_name 83 // -/adjoint/SetAdjSourceEmin Emin energy_unit 83 // -/adjoint/SetAdjSourceEmin Emin energy_unit 84 // Set the minimum energy of the external sou 84 // Set the minimum energy of the external source 85 // -/adjoint/SetAdjSourceEmax Emax energy_unit 85 // -/adjoint/SetAdjSourceEmax Emax energy_unit 86 // Set the maximum energy of the external so 86 // Set the maximum energy of the external source 87 // -/adjoint/ConsiderAsPrimary particle_name 87 // -/adjoint/ConsiderAsPrimary particle_name 88 // The type of particle specified by "partic 88 // The type of particle specified by "particle_name" will be added in 89 // the list of primary adjoint particles. The 89 // the list of primary adjoint particles. The list of candidates depends on the 90 // reverse physics processes considered in th 90 // reverse physics processes considered in the simulation. At the most the potential 91 // candidates are (e-, gamma, proton, ion). 91 // candidates are (e-, gamma, proton, ion). 92 // -/adjoint/NeglectAsPrimary particle_name 92 // -/adjoint/NeglectAsPrimary particle_name 93 // The type of particle specified by "parti 93 // The type of particle specified by "particle_name" will be removed 94 // from the list of primary adjoint particles. 94 // from the list of primary adjoint particles. The list of candidates depends 95 // on the reverse physics processes considered 95 // on the reverse physics processes considered in the simulation. At the most 96 // the potential candidates are (e-, gamma, pr 96 // the potential candidates are (e-, gamma, proton, ion). 97 97 98 // ------------------------------------------- 98 // -------------------------------------------------------------------- 99 // Class Name: G4AdjointSimMessenger 99 // Class Name: G4AdjointSimMessenger 100 // Author: L. Desorgher, 2007-2009 100 // Author: L. Desorgher, 2007-2009 101 // Organisation: SpaceIT GmbH 101 // Organisation: SpaceIT GmbH 102 // Contract: ESA contract 21435/08/NL/AT 102 // Contract: ESA contract 21435/08/NL/AT 103 // Customer: ESA/ESTEC 103 // Customer: ESA/ESTEC 104 // ------------------------------------------- 104 // -------------------------------------------------------------------- 105 #ifndef G4AdjointSimMessenger_hh 105 #ifndef G4AdjointSimMessenger_hh 106 #define G4AdjointSimMessenger_hh 1 106 #define G4AdjointSimMessenger_hh 1 107 107 108 #include "G4UImessenger.hh" 108 #include "G4UImessenger.hh" 109 #include "globals.hh" 109 #include "globals.hh" 110 110 111 class G4AdjointSimManager; 111 class G4AdjointSimManager; 112 class G4UIdirectory; 112 class G4UIdirectory; 113 class G4UIcmdWithAString; 113 class G4UIcmdWithAString; 114 class G4UIcmdWithAnInteger; 114 class G4UIcmdWithAnInteger; 115 class G4UIcmdWith3VectorAndUnit; 115 class G4UIcmdWith3VectorAndUnit; 116 class G4UIcmdWithABool; 116 class G4UIcmdWithABool; 117 class G4UIcmdWithADoubleAndUnit; 117 class G4UIcmdWithADoubleAndUnit; 118 class G4UIcmdWithoutParameter; 118 class G4UIcmdWithoutParameter; 119 class G4UIcmdWithADouble; 119 class G4UIcmdWithADouble; 120 120 121 // ------------------------------------------- 121 // -------------------------------------------------------------------- 122 122 123 class G4AdjointSimMessenger : public G4UImesse 123 class G4AdjointSimMessenger : public G4UImessenger 124 { 124 { 125 public: 125 public: 126 G4AdjointSimMessenger(G4AdjointSimManager* 126 G4AdjointSimMessenger(G4AdjointSimManager*); 127 ~G4AdjointSimMessenger() override; 127 ~G4AdjointSimMessenger() override; 128 128 129 void SetNewValue(G4UIcommand*, G4String) o 129 void SetNewValue(G4UIcommand*, G4String) override; 130 130 131 private: 131 private: 132 G4AdjointSimManager* theAdjointRunManager; 132 G4AdjointSimManager* theAdjointRunManager; 133 133 134 G4UIdirectory* AdjointSimDir = nullptr; 134 G4UIdirectory* AdjointSimDir = nullptr; 135 G4UIcommand* beamOnCmd = nullptr; 135 G4UIcommand* beamOnCmd = nullptr; 136 136 137 G4UIcommand* DefineSpherExtSourceCmd = nul 137 G4UIcommand* DefineSpherExtSourceCmd = nullptr; 138 G4UIcommand* DefineSpherExtSourceCenteredO 138 G4UIcommand* DefineSpherExtSourceCenteredOnAVolumeCmd = nullptr; 139 G4UIcmdWithAString* DefineExtSourceOnAVolu 139 G4UIcmdWithAString* DefineExtSourceOnAVolumeExtSurfaceCmd = nullptr; 140 G4UIcmdWithADoubleAndUnit* setExtSourceEMa 140 G4UIcmdWithADoubleAndUnit* setExtSourceEMaxCmd = nullptr; 141 141 142 G4UIcommand* DefineSpherAdjSourceCmd = nul 142 G4UIcommand* DefineSpherAdjSourceCmd = nullptr; 143 G4UIcommand* DefineSpherAdjSourceCenteredO 143 G4UIcommand* DefineSpherAdjSourceCenteredOnAVolumeCmd = nullptr; 144 G4UIcmdWithAString* DefineAdjSourceOnAVolu 144 G4UIcmdWithAString* DefineAdjSourceOnAVolumeExtSurfaceCmd = nullptr; 145 145 146 G4UIcmdWithADoubleAndUnit* setAdjSourceEmi 146 G4UIcmdWithADoubleAndUnit* setAdjSourceEminCmd = nullptr; 147 G4UIcmdWithADoubleAndUnit* setAdjSourceEma 147 G4UIcmdWithADoubleAndUnit* setAdjSourceEmaxCmd = nullptr; 148 148 149 G4UIcmdWithAString* ConsiderParticleAsPrim 149 G4UIcmdWithAString* ConsiderParticleAsPrimaryCmd = nullptr; 150 G4UIcmdWithAString* NeglectParticleAsPrima 150 G4UIcmdWithAString* NeglectParticleAsPrimaryCmd = nullptr; 151 151 152 G4UIcmdWithAnInteger* setNbOfPrimaryFwdGam 152 G4UIcmdWithAnInteger* setNbOfPrimaryFwdGammasPerEventCmd = nullptr; 153 G4UIcmdWithAnInteger* setNbOfPrimaryAdjGam 153 G4UIcmdWithAnInteger* setNbOfPrimaryAdjGammasPerEventCmd = nullptr; 154 G4UIcmdWithAnInteger* setNbOfPrimaryAdjEle 154 G4UIcmdWithAnInteger* setNbOfPrimaryAdjElectronsPerEventCmd = nullptr; 155 }; 155 }; 156 156 157 #endif 157 #endif 158 158