Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
CexmcProductionModelMessenger Class Reference

#include <CexmcProductionModelMessenger.hh>

Inheritance diagram for CexmcProductionModelMessenger:
G4UImessenger

Public Member Functions

 CexmcProductionModelMessenger (CexmcProductionModel *productionModel)
 
 ~CexmcProductionModelMessenger ()
 
void SetNewValue (G4UIcommand *cmd, G4String value)
 
- Public Member Functions inherited from G4UImessenger
 G4UImessenger ()
 
 G4UImessenger (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
virtual ~G4UImessenger ()
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
G4bool operator== (const G4UImessenger &messenger) const
 

Additional Inherited Members

- Protected Member Functions inherited from G4UImessenger
G4String ItoS (G4int i)
 
G4String DtoS (G4double a)
 
G4String BtoS (G4bool b)
 
G4int StoI (G4String s)
 
G4double StoD (G4String s)
 
G4bool StoB (G4String s)
 
void AddUIcommand (G4UIcommand *newCommand)
 
void CreateDirectory (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
template<typename T >
T * CreateCommand (const G4String &cname, const G4String &dsc)
 
- Protected Attributes inherited from G4UImessenger
G4UIdirectorybaseDir
 
G4String baseDirName
 

Detailed Description

Definition at line 55 of file CexmcProductionModelMessenger.hh.

Constructor & Destructor Documentation

CexmcProductionModelMessenger::CexmcProductionModelMessenger ( CexmcProductionModel productionModel)
explicit

Definition at line 51 of file CexmcProductionModelMessenger.cc.

References G4UIcommand::AvailableForStates(), G4State_Idle, G4State_PreInit, CexmcMessenger::physicsDirName, G4UIcmdWithABool::SetDefaultValue(), G4UIcommand::SetGuidance(), G4UIcmdWith3Vector::SetParameterName(), G4UIcmdWithABool::SetParameterName(), and G4UIcommand::SetRange().

52  :
53  productionModel( productionModel ), applyFermiMotion( NULL ),
54  setAngularRange( NULL ), addAngularRange( NULL )
55 {
56  applyFermiMotion = new G4UIcmdWithABool(
57  ( CexmcMessenger::physicsDirName + "applyFermiMotionInTarget" ).c_str(),
58  this );
59  applyFermiMotion->SetGuidance( "Switch on/off fermi motion in target "
60  "nuclei" );
61  applyFermiMotion->SetParameterName( "ApplyFermiMotionInTarget", true );
62  applyFermiMotion->SetDefaultValue( true );
63  applyFermiMotion->AvailableForStates( G4State_PreInit, G4State_Idle );
64 
65  setAngularRange = new G4UIcmdWith3Vector(
66  ( CexmcMessenger::physicsDirName + "setAngularRange" ).c_str(), this );
67  setAngularRange->SetGuidance(
68  "\n Set angular range of interest given in values of cosinus;\n"
69  " first two values give the range (descending or ascending),\n"
70  " third value gives number of equal divisions within the\n"
71  " range." );
72  setAngularRange->SetParameterName( "ARangeTop", "ARangeBottom",
73  "ARangeNmbOfDivisions", false );
74  setAngularRange->SetRange(
75  "ARangeTop >= -1.0 && ARangeTop <= 1.0 && "
76  "ARangeBottom >= -1.0 && ARangeBottom <= 1.0 && "
77  "ARangeNmbOfDivisions >= 1" );
78  setAngularRange->AvailableForStates( G4State_PreInit, G4State_Idle );
79 
80  addAngularRange = new G4UIcmdWith3Vector(
81  ( CexmcMessenger::physicsDirName + "addAngularRange" ).c_str(), this );
82  addAngularRange->SetGuidance(
83  "\n Add angular range of interest given in values of cosinus;\n"
84  " first two values give the range (descending or ascending),\n"
85  " third value gives number of equal divisions within the\n"
86  " range." );
87  addAngularRange->SetParameterName( "ARangeTop", "ARangeBottom",
88  "ARangeNmbOfDivisions", false );
89  addAngularRange->SetRange(
90  "ARangeTop >= -1.0 && ARangeTop <= 1.0 && "
91  "ARangeBottom >= -1.0 && ARangeBottom <= 1.0 && "
92  "ARangeNmbOfDivisions >= 1" );
93  addAngularRange->AvailableForStates( G4State_PreInit, G4State_Idle );
94 }
void SetParameterName(const char *theNameX, const char *theNameY, const char *theNameZ, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4bool defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4String physicsDirName
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:225
CexmcProductionModelMessenger::~CexmcProductionModelMessenger ( )

Definition at line 97 of file CexmcProductionModelMessenger.cc.

98 {
99  delete applyFermiMotion;
100  delete setAngularRange;
101  delete addAngularRange;
102 }

Member Function Documentation

void CexmcProductionModelMessenger::SetNewValue ( G4UIcommand cmd,
G4String  value 
)
virtual

Reimplemented from G4UImessenger.

Definition at line 105 of file CexmcProductionModelMessenger.cc.

References CexmcProductionModel::AddAngularRange(), CexmcProductionModel::ApplyFermiMotion(), G4UIcmdWith3Vector::GetNew3VectorValue(), G4UIcmdWithABool::GetNewBoolValue(), G4INCL::Math::max(), G4INCL::Math::min(), CexmcProductionModel::SetAngularRange(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

107 {
108  do
109  {
110  if ( cmd == applyFermiMotion )
111  {
112  productionModel->ApplyFermiMotion(
114  break;
115  }
116  if ( cmd == setAngularRange )
117  {
119  value ) );
120  G4double top( std::max( vec.x(), vec.y() ) );
121  G4double bottom( std::min( vec.x(), vec.y() ) );
122  productionModel->SetAngularRange( top, bottom,
123  static_cast< int >( vec.z() ) );
124  break;
125  }
126  if ( cmd == addAngularRange )
127  {
129  value ) );
130  G4double top( std::max( vec.x(), vec.y() ) );
131  G4double bottom( std::min( vec.x(), vec.y() ) );
132  productionModel->AddAngularRange( top, bottom,
133  static_cast< int >( vec.z() ) );
134  break;
135  }
136  } while ( false );
137 }
void SetAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
static G4bool GetNewBoolValue(const char *paramString)
void AddAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
static G4ThreeVector GetNew3VectorValue(const char *paramString)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
double G4double
Definition: G4Types.hh:76
void ApplyFermiMotion(G4bool on, G4bool fromMessenger=true)

The documentation for this class was generated from the following files: