Loading...
Searching...
No Matches
F04PhysicsListMessenger.cc
Go to the documentation of this file.
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/// \file field/field04/src/F04PhysicsListMessenger.cc
28/// \brief Implementation of the F04PhysicsListMessenger class
29//
30
31#include "globals.hh"
32
34#include "F04PhysicsList.hh"
35
36#include <G4UIdirectory.hh>
37#include <G4UIcmdWithAString.hh>
38#include <G4UIcmdWithoutParameter.hh>
39#include <G4UIcmdWithADoubleAndUnit.hh>
40
41#include "G4ParticleTable.hh"
42#include "G4ParticleDefinition.hh"
43
44#include "G4DecayTable.hh"
45#include "G4VDecayChannel.hh"
46
47#include "G4PhaseSpaceDecayChannel.hh"
48#include "G4PionRadiativeDecayChannel.hh"
49
50//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
51
53 : fPhysicsList(pPhys)
54{
55 fDirectory = new G4UIdirectory("/exp/phys/");
56 fDirectory->SetGuidance("Control the physics lists");
57
58 fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/stepMax",this);
59 fStepMaxCMD->SetGuidance("Set max. step length in the detector");
60 fStepMaxCMD->SetParameterName("mxStep",false);
61 fStepMaxCMD->SetUnitCategory("Length");
62 fStepMaxCMD->SetRange("mxStep>0.0");
63 fStepMaxCMD->SetDefaultUnit("mm");
64 fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
65/*
66 fClearPhysicsCMD = new G4UIcmdWithoutParameter("/exp/phys/clearPhysics",
67 this);
68 fClearPhysicsCMD->SetGuidance("Clear the physics list");
69 fClearPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
70
71 fRemovePhysicsCMD = new G4UIcmdWithAString("/exp/phys/removePhysics",this);
72 fRemovePhysicsCMD->
73 SetGuidance("Remove a physics process from Physics List");
74 fRemovePhysicsCMD->SetParameterName("PList",false);
75 fRemovePhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
76*/
77 fDecayDirectory = new G4UIdirectory("/decay/");
78 fDecayDirectory->SetGuidance("Decay chain control commands.");
79
80 fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this);
81 fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu");
82
83 fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this);
84 fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu");
85
86}
87
88//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
89
91{
92/*
93 delete fClearPhysicsCMD;
94 delete fRemovePhysicsCMD;
95*/
96 delete fPienuCMD;
97 delete fPimunuCMD;
98}
99
100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
101
103 G4String newValue)
104{
105 G4ParticleTable* fParticleTable = G4ParticleTable::GetParticleTable();
106
107 if (command == fPienuCMD) {
108 G4ParticleDefinition* fParticleDef = fParticleTable->FindParticle("pi+");
109 G4VDecayChannel* fMode =
110 new G4PhaseSpaceDecayChannel("pi+",0.999983,2,"e+","nu_e");
111 auto fTable = new G4DecayTable();
112 fTable->Insert(fMode);
113 fMode = new G4PionRadiativeDecayChannel("pi+",0.000017);
114 fTable->Insert(fMode);
115 fParticleDef->SetDecayTable(fTable);
116 }
117
118 if (command == fPimunuCMD) {
119 G4ParticleDefinition* fParticleDef = fParticleTable->FindParticle("pi+");
120 G4VDecayChannel* fMode =
121 new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu");
122 auto fTable = new G4DecayTable();
123 fTable->Insert(fMode);
124 fParticleDef->SetDecayTable(fTable);
125 }
126
127 else if (command == fStepMaxCMD) {
129 ->GetNewDoubleValue(newValue));
130 }
131/* else if (command == fClearPhysicsCMD) {
132 fPhysicsList->ClearPhysics();
133 }
134 else if (command == fRemovePhysicsCMD) {
135 G4String name = newValue;
136 fPhysicsList->RemoveFromPhysicsList(name);
137 }
138*/
139}
Definition of the F04PhysicsListMessenger class.
Definition of the F04PhysicsList class.
G4UIcmdWithoutParameter * fPimunuCMD
F04PhysicsListMessenger(F04PhysicsList *)
void SetNewValue(G4UIcommand *, G4String) override
G4UIcmdWithoutParameter * fPienuCMD
G4UIcmdWithADoubleAndUnit * fStepMaxCMD
void SetStepMax(G4double)

Applications | User Support | Publications | Collaboration