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.4)


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