Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/biasing/ReverseMC01/src/RMC01AnalysisManagerMessenger.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/extended/biasing/ReverseMC01/src/RMC01AnalysisManagerMessenger.cc (Version 11.3.0) and /examples/extended/biasing/ReverseMC01/src/RMC01AnalysisManagerMessenger.cc (Version 10.7)


  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 /// \file biasing/ReverseMC01/src/RMC01Analysi     26 /// \file biasing/ReverseMC01/src/RMC01AnalysisManagerMessenger.cc
 27 /// \brief Implementation of the RMC01Analysis     27 /// \brief Implementation of the RMC01AnalysisManagerMessenger class
 28 //                                                 28 //
 29 //                                                 29 //
 30 //////////////////////////////////////////////     30 //////////////////////////////////////////////////////////////
 31 //      Class Name:        RMC01AnalysisManage     31 //      Class Name:        RMC01AnalysisManagerMessenger
 32 //        Author:               L. Desorgher       32 //        Author:               L. Desorgher
 33 //         Organisation:         SpaceIT GmbH      33 //         Organisation:         SpaceIT GmbH
 34 //        Contract:        ESA contract 21435/     34 //        Contract:        ESA contract 21435/08/NL/AT
 35 //         Customer:             ESA/ESTEC         35 //         Customer:             ESA/ESTEC
 36 //////////////////////////////////////////////     36 //////////////////////////////////////////////////////////////
 37                                                    37 
 38 #include "RMC01AnalysisManagerMessenger.hh"        38 #include "RMC01AnalysisManagerMessenger.hh"
 39                                                    39 
 40 #include "RMC01AnalysisManager.hh"                 40 #include "RMC01AnalysisManager.hh"
 41                                                << 
 42 #include "G4SystemOfUnits.hh"                  << 
 43 #include "G4UIcmdWithADouble.hh"               << 
 44 #include "G4UIdirectory.hh"                        41 #include "G4UIdirectory.hh"
                                                   >>  42 #include "G4UIcmdWithADouble.hh"
 45 #include "G4UnitsTable.hh"                         43 #include "G4UnitsTable.hh"
                                                   >>  44 #include "G4SystemOfUnits.hh"
 46                                                    45 
 47 //....oooOO0OOooo........oooOO0OOooo........oo     46 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 48                                                    47 
 49 RMC01AnalysisManagerMessenger::RMC01AnalysisMa <<  48 RMC01AnalysisManagerMessenger::RMC01AnalysisManagerMessenger(
 50   : G4UImessenger(),                           <<  49                                     RMC01AnalysisManager* analysisManager)
 51     fAnalysisManager(analysisManager),         <<  50 : G4UImessenger(),
 52     fAnalysisDir(0),                           <<  51   fAnalysisManager(analysisManager),
 53     fSetPrecisionForConvergenceTestCmd(0),     <<  52   fAnalysisDir(0),
 54     fSetExpSpectrumToNormaliseAdjResCmd(0),    <<  53   fSetPrecisionForConvergenceTestCmd(0),
 55     fSetPowerLawSpectrumToNormaliseAdjResCmd(0 <<  54   fSetExpSpectrumToNormaliseAdjResCmd(0),
 56 {                                              <<  55   fSetPowerLawSpectrumToNormaliseAdjResCmd(0)
                                                   >>  56 { 
 57   fAnalysisDir = new G4UIdirectory("/RMC01/ana     57   fAnalysisDir = new G4UIdirectory("/RMC01/analysis/");
 58   fAnalysisDir->SetGuidance("Analysis commands     58   fAnalysisDir->SetGuidance("Analysis commands");
 59                                                <<  59  
 60   G4UIparameter* fluence_par = new G4UIparamet <<  60   G4UIparameter* fluence_par = new G4UIparameter("Fluence",'d',true);
 61   fluence_par->SetParameterRange("Fluence > 0"     61   fluence_par->SetParameterRange("Fluence > 0");
 62   fluence_par->SetGuidance("Omnidirectional fl     62   fluence_par->SetGuidance("Omnidirectional fluence for primary spectrum");
 63                                                <<  63   
 64   G4UIparameter* fluence_unit_par = new G4UIpa <<  64   G4UIparameter* fluence_unit_par = new G4UIparameter("Fluence_unit",'s',true);
 65   fluence_unit_par->SetParameterCandidates("1/     65   fluence_unit_par->SetParameterCandidates("1/cm2 1/m2 cm-2 m-2");
 66                                                <<  66   
 67   G4UIparameter* alpha_par = new G4UIparameter <<  67   G4UIparameter* alpha_par = new G4UIparameter("alpha",'d',true);
 68                                                <<  68   
 69   G4UIparameter* e0_par = new G4UIparameter("E <<  69   G4UIparameter* e0_par = new G4UIparameter("E0",'d',true);
 70   e0_par->SetParameterRange("E0 > 0");             70   e0_par->SetParameterRange("E0 > 0");
 71                                                <<  71   
 72   G4UIparameter* e1_par = new G4UIparameter("E <<  72   G4UIparameter* e1_par = new G4UIparameter("E1",'d',true);
 73   e1_par->SetParameterRange("E1 > 0");             73   e1_par->SetParameterRange("E1 > 0");
 74                                                <<  74   
 75   G4UIparameter* e2_par = new G4UIparameter("E <<  75   G4UIparameter* e2_par = new G4UIparameter("E2",'d',true);
 76   e2_par->SetParameterRange("E2 > 0");             76   e2_par->SetParameterRange("E2 > 0");
 77                                                <<  77   
 78   G4UIparameter* e_unit_par = new G4UIparamete <<  78   G4UIparameter* e_unit_par = new G4UIparameter("E_unit",'s',true);
 79   e_unit_par->SetParameterCandidates("eV keV M     79   e_unit_par->SetParameterCandidates("eV keV MeV GeV TeV");
 80                                                <<  80   
 81   G4UIparameter* part_name_par = new G4UIparam <<  81   G4UIparameter* part_name_par = new G4UIparameter("particle_name",'s',true);
 82   part_name_par->SetParameterCandidates("e- ga     82   part_name_par->SetParameterCandidates("e- gamma proton ");
 83                                                <<  83   
 84   fSetPowerLawSpectrumToNormaliseAdjResCmd =       84   fSetPowerLawSpectrumToNormaliseAdjResCmd =
 85     new G4UIcommand("/RMC01/analysis/SetPowerL <<  85    new G4UIcommand("/RMC01/analysis/SetPowerLawPrimSpectrumForAdjointSim",this);
 86   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se <<  86   fSetPowerLawSpectrumToNormaliseAdjResCmd
 87     "Set the primary spectrum to which adjoint <<  87      ->SetGuidance("Set the primary spectrum to which adjoint simulation "
 88     "results will be normalised as a power law <<  88                   "results will be normalised as a power law (Ekin^-alpha).");
 89   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     89   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(part_name_par);
 90   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     90   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(fluence_par);
 91   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     91   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(fluence_unit_par);
 92   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     92   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(alpha_par);
 93   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     93   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(e1_par);
 94   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     94   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(e2_par);
 95   fSetPowerLawSpectrumToNormaliseAdjResCmd->Se     95   fSetPowerLawSpectrumToNormaliseAdjResCmd->SetParameter(e_unit_par);
 96   fSetPowerLawSpectrumToNormaliseAdjResCmd->Av <<  96   fSetPowerLawSpectrumToNormaliseAdjResCmd
 97                                                <<  97                              ->AvailableForStates(G4State_PreInit,G4State_Idle);
 98   fSetExpSpectrumToNormaliseAdjResCmd = new G4 <<  98   
 99     "/RMC01/analysis/"                         <<  99 
100     "SetExponentialSpectrumForAdjointSim",     << 100   fSetExpSpectrumToNormaliseAdjResCmd = new G4UIcommand("/RMC01/analysis/"
101     this);                                     << 101                                   "SetExponentialSpectrumForAdjointSim",this);
102   fSetExpSpectrumToNormaliseAdjResCmd->SetGuid << 102   fSetExpSpectrumToNormaliseAdjResCmd
103     "Set the primary spectrum to which adjoint << 103     ->SetGuidance("Set the primary spectrum to which adjoint simulation results"
104     "will be normalised as exponential (exp(-E << 104                           "will be normalised as exponential (exp(-Ekin/E0)).");
105   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 105   fSetExpSpectrumToNormaliseAdjResCmd
106   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 106                              ->SetParameter(new G4UIparameter(*part_name_par));
107   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 107   fSetExpSpectrumToNormaliseAdjResCmd
108   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 108                                ->SetParameter(new G4UIparameter(*fluence_par));
109   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 109   fSetExpSpectrumToNormaliseAdjResCmd
110   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 110                           ->SetParameter(new G4UIparameter(*fluence_unit_par));
111   fSetExpSpectrumToNormaliseAdjResCmd->SetPara << 111   fSetExpSpectrumToNormaliseAdjResCmd
112   fSetExpSpectrumToNormaliseAdjResCmd->Availab << 112                                  ->SetParameter(new G4UIparameter(*e0_par));
113                                                << 113   fSetExpSpectrumToNormaliseAdjResCmd
114   fSetPrecisionForConvergenceTestCmd = new G4U << 114                                  ->SetParameter(new G4UIparameter(*e1_par));
115     "/RMC01/analysis/"                         << 115   fSetExpSpectrumToNormaliseAdjResCmd
116     "SetExpectedPrecisionOfResults",           << 116                                  ->SetParameter(new G4UIparameter(*e2_par));
117     this);                                     << 117   fSetExpSpectrumToNormaliseAdjResCmd
118   fSetPrecisionForConvergenceTestCmd->SetGuida << 118                                 ->SetParameter(new G4UIparameter(*e_unit_par));
119     "Set the precision in % that the computed  << 119   fSetExpSpectrumToNormaliseAdjResCmd
120     "in the sensitive volume should reached. I << 120                              ->AvailableForStates(G4State_PreInit,G4State_Idle);
121     " before the end of the run, the run is ab << 121   
122     "registered.");                            << 122   
123   fSetPrecisionForConvergenceTestCmd->SetParam << 123   fSetPrecisionForConvergenceTestCmd = new G4UIcmdWithADouble("/RMC01/analysis/"
124   fSetPrecisionForConvergenceTestCmd->Availabl << 124                                          "SetExpectedPrecisionOfResults",this);
                                                   >> 125   fSetPrecisionForConvergenceTestCmd
                                                   >> 126     ->SetGuidance("Set the precision in % that the computed energy deposited "
                                                   >> 127           "in the sensitive volume should reached. If this precision is reached"
                                                   >> 128           " before the end of the run, the run is aborted and the results are "
                                                   >> 129           "registered.");
                                                   >> 130   fSetPrecisionForConvergenceTestCmd->SetParameterName("Precision",true); 
                                                   >> 131   fSetPrecisionForConvergenceTestCmd
                                                   >> 132                              ->AvailableForStates(G4State_PreInit,G4State_Idle);
125 }                                                 133 }
126                                                   134 
127 //....oooOO0OOooo........oooOO0OOooo........oo    135 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
128                                                   136 
129 RMC01AnalysisManagerMessenger::~RMC01AnalysisM    137 RMC01AnalysisManagerMessenger::~RMC01AnalysisManagerMessenger()
130 {                                                 138 {
131   delete fAnalysisDir;                            139   delete fAnalysisDir;
132 }                                                 140 }
133                                                   141 
134 //....oooOO0OOooo........oooOO0OOooo........oo    142 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
135                                                   143 
136 void RMC01AnalysisManagerMessenger::SetNewValu << 144 void RMC01AnalysisManagerMessenger::SetNewValue(
                                                   >> 145                                       G4UIcommand* command,G4String newValue)
137 {                                                 146 {
138   if (command == fSetPowerLawSpectrumToNormali << 147   if( command == fSetPowerLawSpectrumToNormaliseAdjResCmd){
139     G4double alpha, e1, e2, fluence;           << 148     G4double  alpha,e1,e2,fluence;
140     G4String f_unit, e_unit, part_name;        << 149     G4String  f_unit,e_unit,part_name;
141     const char* nv = (const char*)newValue;       150     const char* nv = (const char*)newValue;
142     std::istringstream is(nv);                    151     std::istringstream is(nv);
143     is >> part_name >> fluence >> f_unit >> al << 152     is >> part_name>>fluence>>f_unit>>alpha>>e1>>e2>>e_unit;
144                                                << 153     
145     G4double factor_f_unit = 1 / cm2;          << 154     G4double factor_f_unit=1/cm2;
146     if (f_unit == "1/m2" || f_unit == "m-2") f << 155     if (f_unit == "1/m2" ||   f_unit =="m-2") factor_f_unit=1/m2;
147     fluence *= factor_f_unit;                  << 156     fluence*=factor_f_unit;
148     e1 *= G4UnitDefinition::GetValueOf(e_unit) << 157     e1*= G4UnitDefinition::GetValueOf(e_unit);
149     e2 *= G4UnitDefinition::GetValueOf(e_unit) << 158     e2*= G4UnitDefinition::GetValueOf(e_unit);
150     fAnalysisManager->SetPrimaryPowerLawSpectr << 159     fAnalysisManager->SetPrimaryPowerLawSpectrumForAdjointSim(
                                                   >> 160                                             part_name, fluence, alpha, e1, e2);
151   }                                               161   }
152   else if (command == fSetExpSpectrumToNormali << 162   else if( command == fSetExpSpectrumToNormaliseAdjResCmd){
153     G4double e0, e1, e2, fluence;              << 163           G4double  e0,e1,e2,fluence;
154     G4String f_unit, e_unit, part_name;        << 164     G4String  f_unit,e_unit,part_name;
155     const char* nv = (const char*)newValue;       165     const char* nv = (const char*)newValue;
156     std::istringstream is(nv);                    166     std::istringstream is(nv);
157     is >> part_name >> fluence >> f_unit >> e0 << 167     is >> part_name>>fluence>>f_unit>>e0>>e1>>e2>>e_unit;
158                                                << 168     
159     G4double factor_f_unit = 1 / cm2;          << 169     G4double factor_f_unit=1/cm2;
160     if (f_unit == "1/m2" || f_unit == "m-2") f << 170     if (f_unit == "1/m2" || f_unit =="m-2") factor_f_unit=1/m2;
161                                                << 171     
162     fluence *= factor_f_unit;                  << 172     fluence*=factor_f_unit;
163     e0 *= G4UnitDefinition::GetValueOf(e_unit) << 173     e0*= G4UnitDefinition::GetValueOf(e_unit);
164     e1 *= G4UnitDefinition::GetValueOf(e_unit) << 174     e1*= G4UnitDefinition::GetValueOf(e_unit);
165     e2 *= G4UnitDefinition::GetValueOf(e_unit) << 175     e2*= G4UnitDefinition::GetValueOf(e_unit);
166                                                << 176         
167     fAnalysisManager->SetPrimaryExpSpectrumFor << 177     fAnalysisManager->SetPrimaryExpSpectrumForAdjointSim(part_name,
                                                   >> 178                                                           fluence, e0, e1, e2);
                                                   >> 179           
168   }                                               180   }
169   else if (command == fSetPrecisionForConverge << 181   else if( command == fSetPrecisionForConvergenceTestCmd){ 
170     fAnalysisManager->SetPrecision(fSetPrecisi << 182           fAnalysisManager->SetPrecision(
                                                   >> 183              fSetPrecisionForConvergenceTestCmd->GetNewDoubleValue(newValue));
171   }                                               184   }
172 }                                                 185 }
173                                                   186 
174 //....oooOO0OOooo........oooOO0OOooo........oo    187 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
175                                                   188