Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/physics_lists/constructors/gamma_lepto_nuclear/src/G4EmMessenger.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 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //
 27 //---------------------------------------------------------------------------
 28 //
 29 // ClassName:   G4EmMessenger
 30 //
 31 // Author: 2002 J.P. Wellisch
 32 //
 33 // Modified:
 34 // 09.11.2005 V.Ivanchenko edit to provide a standard
 35 // 19.06.2006 V.Ivanchenko add mu-nuclear process
 36 //
 37 //----------------------------------------------------------------------------
 38 //
 39 
 40 #include "G4EmMessenger.hh"
 41 #include "G4EmExtraPhysics.hh"
 42 
 43 G4EmMessenger::G4EmMessenger(G4EmExtraPhysics* ab)
 44 {
 45   theB = ab;
 46   aDir1 = new G4UIdirectory("/physics_lists/", false);
 47   aDir1->SetGuidance("commands for physics list configuration.");
 48 
 49   // general stuff.
 50   aDir2 = new G4UIdirectory("/physics_lists/em/", false);
 51   aDir2->SetGuidance("Extra EM processes configuration.");
 52 
 53   // command for synchrotron radiation.
 54   theSynch = new G4UIcmdWithABool("/physics_lists/em/SyncRadiation",this);
 55   theSynch->SetGuidance("Switching on/off synchrotron radiation.");
 56   theSynch->AvailableForStates(G4State_PreInit);
 57   theSynch->SetToBeBroadcasted(false);
 58 
 59   // command for synchrotron radiation.
 60   theSynchAll = new G4UIcmdWithABool("/physics_lists/em/SyncRadiationAll",this);
 61   theSynchAll->SetGuidance("Switching on/off synchrotron radiation for all charged.");
 62   theSynchAll->AvailableForStates(G4State_PreInit);
 63   theSynchAll->SetToBeBroadcasted(false);
 64 
 65   // command for gamma nuclear physics.
 66   theGN = new G4UIcmdWithABool("/physics_lists/em/GammaNuclear",this);
 67   theGN->SetGuidance("Switching on gamma nuclear physics.");
 68   theGN->AvailableForStates(G4State_PreInit);
 69   theGN->SetToBeBroadcasted(false);
 70 
 71   // command for gamma nuclear physics.
 72   theXS = new G4UIcmdWithABool("/physics_lists/em/UseGammaNuclearXS",this);
 73   theXS->SetGuidance("Use XS gamma nuclear cross section.");
 74   theXS->AvailableForStates(G4State_PreInit);
 75   theXS->SetToBeBroadcasted(false);
 76 
 77   // command for lend gamma nuclear physics.
 78   theGLENDN = new G4UIcmdWithABool("/physics_lists/em/LENDGammaNuclear",this);
 79   theGLENDN->SetGuidance("Switching on LEND gamma nuclear physics.");
 80   theGLENDN->AvailableForStates(G4State_PreInit);
 81   theGLENDN->SetToBeBroadcasted(false);
 82 
 83   theEN = new G4UIcmdWithABool("/physics_lists/em/ElectroNuclear",this);
 84   theEN->SetGuidance("Switching on e+- nuclear physics.");
 85   theEN->AvailableForStates(G4State_PreInit);
 86   theEN->SetToBeBroadcasted(false);
 87 
 88   // command for muon nuclear physics.
 89   theMUN = new G4UIcmdWithABool("/physics_lists/em/MuonNuclear",this);
 90   theMUN->SetGuidance("Switching on muon nuclear physics.");
 91   theMUN->AvailableForStates(G4State_PreInit);
 92   theMUN->SetToBeBroadcasted(false);
 93 
 94   theGMM = new G4UIcmdWithABool("/physics_lists/em/GammaToMuons",this);
 95   theGMM->SetGuidance("Switching on gamma conversion to muon pair.");
 96   theGMM->AvailableForStates(G4State_PreInit);
 97   theGMM->SetToBeBroadcasted(false);
 98 
 99   theMMM = new G4UIcmdWithABool("/physics_lists/em/MuonToMuons",this);
100   theMMM->SetGuidance("Switching on muon pair production by muons.");
101   theMMM->AvailableForStates(G4State_PreInit);
102   theMMM->SetToBeBroadcasted(false);
103 
104   thePMM = new G4UIcmdWithABool("/physics_lists/em/PositronToMuons",this);
105   thePMM->SetGuidance("Switching on positron conversion to muon pair.");
106   thePMM->AvailableForStates(G4State_PreInit);
107   thePMM->SetToBeBroadcasted(false);
108 
109   thePH = new G4UIcmdWithABool("/physics_lists/em/PositronToHadrons",this);
110   thePH->SetGuidance("Switching on positron conversion to hadrons.");
111   thePH->AvailableForStates(G4State_PreInit);
112   thePH->SetToBeBroadcasted(false);
113 
114   theGMM1 = new G4UIcmdWithADouble("/physics_lists/em/GammaToMuonsFactor",this);
115   theGMM1->SetGuidance("Factor for gamma conversion to muon pair.");
116   theGMM1->AvailableForStates(G4State_PreInit);
117   theGMM1->SetToBeBroadcasted(false);
118 
119   thePMM1 = new G4UIcmdWithADouble("/physics_lists/em/PositronToMuonsFactor",this);
120   thePMM1->SetGuidance("Factor for positron conversion to muon pair.");
121   thePMM1->AvailableForStates(G4State_PreInit);
122   thePMM1->SetToBeBroadcasted(false);
123 
124   thePH1 = new G4UIcmdWithADouble("/physics_lists/em/PositronToHadronsFactor",this);
125   thePH1->SetGuidance("Factor for positron conversion to hadrons.");
126   thePH1->AvailableForStates(G4State_PreInit);
127   thePH1->SetToBeBroadcasted(false);
128 
129   theGNlowe = new G4UIcmdWithADoubleAndUnit("/physics_lists/em/GammaNuclearLEModelLimit",this);
130   theGNlowe->SetGuidance("Upper energy limit for low-energy gamma-nuclear model");
131   theGNlowe->SetParameterName("emin",true);
132   theGNlowe->SetUnitCategory("Energy");
133   theGNlowe->AvailableForStates(G4State_PreInit);
134   theGNlowe->SetToBeBroadcasted(false);
135 }
136 
137 G4EmMessenger::~G4EmMessenger()
138 {
139   delete theSynch;
140   delete theSynchAll;
141   delete theGN;
142   delete theGLENDN;
143   delete theEN;
144   delete theMUN;
145   delete theGMM;
146   delete theMMM;
147   delete thePMM;
148   delete thePH;
149 
150   delete theGMM1;
151   delete thePMM1;
152   delete thePH1;
153   delete theGNlowe;
154   delete theXS;
155 
156   delete aDir1;
157   delete aDir2;
158 }
159 
160 void G4EmMessenger::SetNewValue(G4UIcommand* aComm, G4String aS)
161 {
162   if (aComm==theSynch)
163     theB->Synch(theSynch->GetNewBoolValue(aS));
164   else if (aComm==theSynchAll)
165     theB->SynchAll(theSynchAll->GetNewBoolValue(aS));
166   else if (aComm==theGN)
167     theB->GammaNuclear(theGN->GetNewBoolValue(aS));
168   else if (aComm==theGLENDN)
169     theB->LENDGammaNuclear(theGLENDN->GetNewBoolValue(aS));
170   else if (aComm==theEN)
171     theB->ElectroNuclear(theEN->GetNewBoolValue(aS));
172   else if (aComm==theMUN)
173     theB->MuonNuclear(theMUN->GetNewBoolValue(aS));
174   else if (aComm==theGMM)
175     theB->GammaToMuMu(theGMM->GetNewBoolValue(aS));
176   else if (aComm==theMMM)
177     theB->MuonToMuMu(theMMM->GetNewBoolValue(aS));
178   else if (aComm==thePMM)
179     theB->PositronToMuMu(thePMM->GetNewBoolValue(aS));
180   else if (aComm==thePH)
181     theB->PositronToHadrons(thePH->GetNewBoolValue(aS));
182   else if (aComm==theXS)
183     theB->SetUseGammaNuclearXS(theXS->GetNewBoolValue(aS));
184   else if (aComm==theGMM1)
185     theB->GammaToMuMuFactor(theGMM1->GetNewDoubleValue(aS));
186   else if (aComm==thePMM1)
187     theB->PositronToMuMuFactor(thePMM1->GetNewDoubleValue(aS));
188   else if (aComm==thePH1)
189     theB->PositronToHadronsFactor(thePH1->GetNewDoubleValue(aS));
190   else if (aComm==theGNlowe)
191     theB->GammaNuclearLEModelLimit(theGNlowe->GetNewDoubleValue(aS));
192 }
193