Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/ChargeExchangeMC/src/CexmcParticleGunMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/advanced/ChargeExchangeMC/src/CexmcParticleGunMessenger.cc (Version 11.3.0) and /examples/advanced/ChargeExchangeMC/src/CexmcParticleGunMessenger.cc (Version 10.1)


  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 /*                                                 26 /*
 27  * ===========================================     27  * ============================================================================
 28  *                                                 28  *
 29  *       Filename:  CexmcParticleGunMessenger.     29  *       Filename:  CexmcParticleGunMessenger.cc
 30  *                                                 30  *
 31  *    Description:  original position and mome     31  *    Description:  original position and momentum of the incident beam particle
 32  *                                                 32  *
 33  *        Version:  1.0                            33  *        Version:  1.0
 34  *        Created:  15.12.2009 14:02:01            34  *        Created:  15.12.2009 14:02:01
 35  *       Revision:  none                           35  *       Revision:  none
 36  *       Compiler:  gcc                            36  *       Compiler:  gcc
 37  *                                                 37  *
 38  *         Author:  Alexey Radkov (),              38  *         Author:  Alexey Radkov (), 
 39  *        Company:  PNPI                           39  *        Company:  PNPI
 40  *                                                 40  *
 41  * ===========================================     41  * ============================================================================
 42  */                                                42  */
 43                                                    43 
 44 #include <G4UIcmdWithAString.hh>                   44 #include <G4UIcmdWithAString.hh>
 45 #include <G4UIcmdWithADoubleAndUnit.hh>            45 #include <G4UIcmdWithADoubleAndUnit.hh>
 46 #include <G4UIcmdWith3Vector.hh>                   46 #include <G4UIcmdWith3Vector.hh>
 47 #include <G4UIcmdWith3VectorAndUnit.hh>            47 #include <G4UIcmdWith3VectorAndUnit.hh>
 48 #include <G4ParticleDefinition.hh>                 48 #include <G4ParticleDefinition.hh>
 49 #include <G4ParticleTable.hh>                      49 #include <G4ParticleTable.hh>
 50 #include "CexmcParticleGun.hh"                     50 #include "CexmcParticleGun.hh"
 51 #include "CexmcParticleGunMessenger.hh"            51 #include "CexmcParticleGunMessenger.hh"
 52 #include "CexmcRunManager.hh"                      52 #include "CexmcRunManager.hh"
 53 #include "CexmcException.hh"                       53 #include "CexmcException.hh"
 54 #include "CexmcMessenger.hh"                       54 #include "CexmcMessenger.hh"
 55                                                    55 
 56                                                    56 
 57 CexmcParticleGunMessenger::CexmcParticleGunMes     57 CexmcParticleGunMessenger::CexmcParticleGunMessenger(
 58                                             Ce <<  58                                             CexmcParticleGun *  particleGun ) :
 59     particleGun( particleGun_ ), setParticle(  <<  59     particleGun( particleGun ), setParticle( NULL ), setOrigPosition( NULL ),
 60     setOrigDirection( NULL ), setOrigMomentumA     60     setOrigDirection( NULL ), setOrigMomentumAmp( NULL )
 61 {                                                  61 {
 62     setParticle = new G4UIcmdWithAString(          62     setParticle = new G4UIcmdWithAString(
 63         ( CexmcMessenger::gunDirName + "partic     63         ( CexmcMessenger::gunDirName + "particle" ).c_str(), this );
 64     setParticle->SetGuidance( "Incident beam p     64     setParticle->SetGuidance( "Incident beam particle" );
 65     setParticle->SetParameterName( "BeamPartic     65     setParticle->SetParameterName( "BeamParticle", false );
 66     setParticle->SetCandidates( "pi-" );           66     setParticle->SetCandidates( "pi-" );
 67     setParticle->SetDefaultValue( "pi-" );         67     setParticle->SetDefaultValue( "pi-" );
 68     setParticle->AvailableForStates( G4State_P     68     setParticle->AvailableForStates( G4State_PreInit, G4State_Idle );
 69                                                    69 
 70     setOrigPosition = new G4UIcmdWith3VectorAn     70     setOrigPosition = new G4UIcmdWith3VectorAndUnit( 
 71         ( CexmcMessenger::gunDirName + "positi     71         ( CexmcMessenger::gunDirName + "position" ).c_str(), this );
 72     setOrigPosition->SetGuidance( "Original po     72     setOrigPosition->SetGuidance( "Original position of the beam" );
 73     setOrigPosition->SetParameterName( "Positi     73     setOrigPosition->SetParameterName( "PositionX", "PositionY", "PositionZ",
 74                                        false )     74                                        false );
 75     setOrigPosition->SetUnitCandidates( "mm cm     75     setOrigPosition->SetUnitCandidates( "mm cm m" );
 76     setOrigPosition->SetDefaultUnit( "cm" );       76     setOrigPosition->SetDefaultUnit( "cm" );
 77     setOrigPosition->AvailableForStates( G4Sta     77     setOrigPosition->AvailableForStates( G4State_PreInit, G4State_Idle );
 78                                                    78 
 79     setOrigDirection = new G4UIcmdWith3Vector(     79     setOrigDirection = new G4UIcmdWith3Vector(
 80         ( CexmcMessenger::gunDirName + "direct     80         ( CexmcMessenger::gunDirName + "direction" ).c_str(), this );
 81     setOrigDirection->SetGuidance( "Original d     81     setOrigDirection->SetGuidance( "Original direction of the beam" );
 82     setOrigDirection->SetParameterName( "Direc     82     setOrigDirection->SetParameterName( "DirectionX", "DirectionY",
 83                                         "Direc     83                                         "DirectionZ", false );
 84     setOrigDirection->SetRange(                    84     setOrigDirection->SetRange(
 85         "DirectionX >= -1.0 && DirectionX <= 1     85         "DirectionX >= -1.0 && DirectionX <= 1.0 && "
 86         "DirectionY >= -1.0 && DirectionY <= 1     86         "DirectionY >= -1.0 && DirectionY <= 1.0 && "
 87         "DirectionZ >= -1.0 && DirectionZ <= 1     87         "DirectionZ >= -1.0 && DirectionZ <= 1.0" );
 88     setOrigDirection->AvailableForStates( G4St     88     setOrigDirection->AvailableForStates( G4State_PreInit, G4State_Idle );
 89                                                    89 
 90     setOrigMomentumAmp = new G4UIcmdWithADoubl     90     setOrigMomentumAmp = new G4UIcmdWithADoubleAndUnit(
 91         ( CexmcMessenger::gunDirName + "moment     91         ( CexmcMessenger::gunDirName + "momentumAmp" ).c_str(), this );
 92     setOrigMomentumAmp->SetGuidance( "Original     92     setOrigMomentumAmp->SetGuidance( "Original momentum of the beam" );
 93     setOrigMomentumAmp->SetParameterName( "Mom     93     setOrigMomentumAmp->SetParameterName( "MomentumAmp", false );
 94     setOrigMomentumAmp->SetRange( "MomentumAmp     94     setOrigMomentumAmp->SetRange( "MomentumAmp > 0" );
 95     setOrigMomentumAmp->SetUnitCandidates( "eV     95     setOrigMomentumAmp->SetUnitCandidates( "eV keV MeV GeV" );
 96     setOrigMomentumAmp->SetDefaultUnit( "MeV"      96     setOrigMomentumAmp->SetDefaultUnit( "MeV" );
 97     setOrigMomentumAmp->AvailableForStates( G4     97     setOrigMomentumAmp->AvailableForStates( G4State_PreInit, G4State_Idle );
 98 }                                                  98 }
 99                                                    99 
100                                                   100 
101 CexmcParticleGunMessenger::~CexmcParticleGunMe    101 CexmcParticleGunMessenger::~CexmcParticleGunMessenger()
102 {                                                 102 {
103     delete setParticle;                           103     delete setParticle;
104     delete setOrigPosition;                       104     delete setOrigPosition;
105     delete setOrigDirection;                      105     delete setOrigDirection;
106     delete setOrigMomentumAmp;                    106     delete setOrigMomentumAmp;
107 }                                                 107 }
108                                                   108 
109                                                   109 
110 void  CexmcParticleGunMessenger::SetNewValue(     110 void  CexmcParticleGunMessenger::SetNewValue( G4UIcommand *  cmd,
111                                                   111                                               G4String  value )
112 {                                                 112 {
113     do                                            113     do
114     {                                             114     {
115         if ( cmd == setParticle )                 115         if ( cmd == setParticle )
116         {                                         116         {
117             G4ParticleDefinition *  particleDe    117             G4ParticleDefinition *  particleDefinition(
118                 G4ParticleTable::GetParticleTa    118                 G4ParticleTable::GetParticleTable()->FindParticle( value ) );
119                                                   119 
120             if ( ! particleDefinition )           120             if ( ! particleDefinition )
121                 throw CexmcException( CexmcWei    121                 throw CexmcException( CexmcWeirdException );
122                                                   122 
123             particleGun->SetBeamParticle( part    123             particleGun->SetBeamParticle( particleDefinition );
124                                                   124 
125             CexmcRunManager *  runManager( sta    125             CexmcRunManager *  runManager( static_cast< CexmcRunManager * >(
126                                             G4    126                                             G4RunManager::GetRunManager() ) );
127             runManager->BeamParticleChangeHook    127             runManager->BeamParticleChangeHook();
128             break;                                128             break;
129         }                                         129         }
130         if ( cmd == setOrigPosition )             130         if ( cmd == setOrigPosition )
131         {                                         131         {
132             particleGun->SetOrigPosition(         132             particleGun->SetOrigPosition(
133                     G4UIcmdWith3VectorAndUnit:    133                     G4UIcmdWith3VectorAndUnit::GetNew3VectorValue( value ) );
134             break;                                134             break;
135         }                                         135         }
136         if ( cmd == setOrigDirection )            136         if ( cmd == setOrigDirection )
137         {                                         137         {
138             particleGun->SetOrigDirection(        138             particleGun->SetOrigDirection(
139                     G4UIcmdWith3Vector::GetNew    139                     G4UIcmdWith3Vector::GetNew3VectorValue( value ) );
140             break;                                140             break;
141         }                                         141         }
142         if ( cmd == setOrigMomentumAmp )          142         if ( cmd == setOrigMomentumAmp )
143         {                                         143         {
144             particleGun->SetOrigMomentumAmp(      144             particleGun->SetOrigMomentumAmp(
145                     G4UIcmdWithADoubleAndUnit:    145                     G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
146             break;                                146             break;
147         }                                         147         }
148     } while ( false );                            148     } while ( false );
149 }                                                 149 }
150                                                   150 
151                                                   151