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 9.5.p2)


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