Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/digits_hits/utils/src/G4ScoringMessenger.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 /digits_hits/utils/src/G4ScoringMessenger.cc (Version 11.3.0) and /digits_hits/utils/src/G4ScoringMessenger.cc (Version 9.6)


  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 // G4ScoringMessenger                          <<  26 //
 27 // ------------------------------------------- <<  27 // $Id$
                                                   >>  28 //
                                                   >>  29 // ---------------------------------------------------------------------
 28                                                    30 
 29 #include "G4ScoringMessenger.hh"                   31 #include "G4ScoringMessenger.hh"
 30 #include "G4ScoringManager.hh"                     32 #include "G4ScoringManager.hh"
 31 #include "G4VScoringMesh.hh"                       33 #include "G4VScoringMesh.hh"
 32 #include "G4ScoringBox.hh"                         34 #include "G4ScoringBox.hh"
 33 #include "G4ScoringCylinder.hh"                    35 #include "G4ScoringCylinder.hh"
 34 #include "G4ScoringRealWorld.hh"               << 
 35 #include "G4ScoringProbe.hh"                   << 
 36                                                    36 
 37 #include "G4UIdirectory.hh"                        37 #include "G4UIdirectory.hh"
 38 #include "G4UIcmdWithoutParameter.hh"              38 #include "G4UIcmdWithoutParameter.hh"
 39 #include "G4UIcmdWithAnInteger.hh"                 39 #include "G4UIcmdWithAnInteger.hh"
 40 #include "G4UIcmdWithAString.hh"                   40 #include "G4UIcmdWithAString.hh"
 41 #include "G4UIcmdWithABool.hh"                     41 #include "G4UIcmdWithABool.hh"
 42 #include "G4UIcmdWithADoubleAndUnit.hh"            42 #include "G4UIcmdWithADoubleAndUnit.hh"
 43 #include "G4UIcmdWith3VectorAndUnit.hh"            43 #include "G4UIcmdWith3VectorAndUnit.hh"
 44 #include "G4UIcommand.hh"                          44 #include "G4UIcommand.hh"
 45 #include "G4UIparameter.hh"                    << 
 46 #include "G4Tokenizer.hh"                          45 #include "G4Tokenizer.hh"
 47 #include "G4UnitsTable.hh"                         46 #include "G4UnitsTable.hh"
 48 #include "G4VScoreColorMap.hh"                     47 #include "G4VScoreColorMap.hh"
 49                                                    48 
 50 #include "G4VPrimitivePlotter.hh"              << 
 51 #include "G4VScoreHistFiller.hh"               << 
 52                                                << 
 53 G4ScoringMessenger::G4ScoringMessenger(G4Scori     49 G4ScoringMessenger::G4ScoringMessenger(G4ScoringManager* SManager)
 54   : fSMan(SManager)                            <<  50 :fSMan(SManager)
 55 {                                                  51 {
 56   G4UIparameter* param = nullptr;              <<  52   G4UIparameter* param;
 57                                                    53 
 58   scoreDir = new G4UIdirectory("/score/");         54   scoreDir = new G4UIdirectory("/score/");
 59   scoreDir->SetGuidance("Interactive scoring c     55   scoreDir->SetGuidance("Interactive scoring commands.");
 60                                                    56 
 61   listCmd = new G4UIcmdWithoutParameter("/scor <<  57   listCmd = new G4UIcmdWithoutParameter("/score/list",this);
 62   listCmd->SetGuidance("List scoring worlds.")     58   listCmd->SetGuidance("List scoring worlds.");
 63                                                    59 
 64   dumpCmd = new G4UIcmdWithoutParameter("/scor <<  60   dumpCmd = new G4UIcmdWithoutParameter("/score/dump",this);
 65   dumpCmd->SetGuidance("Dump results of scorer     61   dumpCmd->SetGuidance("Dump results of scorers.");
 66                                                    62 
 67   verboseCmd = new G4UIcmdWithAnInteger("/scor <<  63   verboseCmd = new G4UIcmdWithAnInteger("/score/verbose",this);
 68   verboseCmd->SetGuidance("Verbosity.");           64   verboseCmd->SetGuidance("Verbosity.");
 69   verboseCmd->SetGuidance("  0) errors or warn     65   verboseCmd->SetGuidance("  0) errors or warnings,");
 70   verboseCmd->SetGuidance("  1) information wi     66   verboseCmd->SetGuidance("  1) information with 0)");
 71                                                    67 
                                                   >>  68   meshDir = new G4UIdirectory("/score/mesh/");
                                                   >>  69   meshDir->SetGuidance("    Mesh processing commands.");
                                                   >>  70 
 72   meshCreateDir = new G4UIdirectory("/score/cr     71   meshCreateDir = new G4UIdirectory("/score/create/");
 73   meshCreateDir->SetGuidance("  Mesh creation      72   meshCreateDir->SetGuidance("  Mesh creation commands.");
 74   //                                               73   //
 75   // Mesh commands                                 74   // Mesh commands
 76   meshBoxCreateCmd = new G4UIcmdWithAString("/ <<  75   meshBoxCreateCmd = new G4UIcmdWithAString("/score/create/boxMesh",this);
 77   meshBoxCreateCmd->SetGuidance("Create scorin     76   meshBoxCreateCmd->SetGuidance("Create scoring box mesh.");
 78   meshBoxCreateCmd->SetParameterName("MeshName <<  77   meshBoxCreateCmd->SetParameterName("MeshName",false);
 79   //                                               78   //
 80   meshCylinderCreateCmd =                      <<  79   meshCylinderCreateCmd = new G4UIcmdWithAString("/score/create/cylinderMesh",this);
 81     new G4UIcmdWithAString("/score/create/cyli << 
 82   meshCylinderCreateCmd->SetGuidance("Create s     80   meshCylinderCreateCmd->SetGuidance("Create scoring mesh.");
 83   meshCylinderCreateCmd->SetParameterName("Mes <<  81   meshCylinderCreateCmd->SetParameterName("MeshName",false);
 84                                                << 
 85   meshRWLogVolCreateCmd =                      << 
 86     new G4UIcommand("/score/create/realWorldLo << 
 87   meshRWLogVolCreateCmd->SetGuidance(          << 
 88     "Define scorers to a logical volume define << 
 89   meshRWLogVolCreateCmd->SetGuidance(          << 
 90     "  - Name of the specified logical volume  << 
 91   meshRWLogVolCreateCmd->SetGuidance(          << 
 92     "  - /score/mesh commands do not affect fo << 
 93   meshRWLogVolCreateCmd->SetGuidance(          << 
 94     "  - If copyNumberLevel is set, the copy n << 
 95   meshRWLogVolCreateCmd->SetGuidance(          << 
 96     "    in the geometrical hierarchy is used  << 
 97   param = new G4UIparameter("logVol", 's', fal << 
 98   meshRWLogVolCreateCmd->SetParameter(param);  << 
 99   param = new G4UIparameter("copyNumberLevel", << 
100   param->SetParameterRange("copyNumberLevel>=0 << 
101   param->SetDefaultValue(0);                   << 
102   meshRWLogVolCreateCmd->SetParameter(param);  << 
103   //                                           << 
104   probeCreateCmd = new G4UIcommand("/score/cre << 
105   probeCreateCmd->SetGuidance("Define scoring  << 
106   probeCreateCmd->SetGuidance(                 << 
107     "  halfSize defines the half-width of the  << 
108   param = new G4UIparameter("pname", 's', fals << 
109   probeCreateCmd->SetParameter(param);         << 
110   param = new G4UIparameter("halfSize", 'd', f << 
111   probeCreateCmd->SetParameter(param);         << 
112   param = new G4UIparameter("unit", 's', true) << 
113   param->SetDefaultUnit("mm");                 << 
114   probeCreateCmd->SetParameter(param);         << 
115   param = new G4UIparameter("checkOverlap", 'b << 
116   param->SetDefaultValue(0);                   << 
117   probeCreateCmd->SetParameter(param);         << 
118   //                                               82   //
119   meshOpnCmd = new G4UIcmdWithAString("/score/ <<  83 //  meshSphereCreateCmd = new G4UIcmdWithAString("/score/create/sphereMesh",this);
                                                   >>  84 //  meshSphereCreateCmd->SetGuidance("Create scoring mesh.");
                                                   >>  85 //  meshSphereCreateCmd->SetParameterName("MeshName",false);
                                                   >>  86   //
                                                   >>  87   meshOpnCmd = new G4UIcmdWithAString("/score/open",this);
120   meshOpnCmd->SetGuidance("Open scoring mesh."     88   meshOpnCmd->SetGuidance("Open scoring mesh.");
121   meshOpnCmd->SetParameterName("MeshName", fal <<  89   meshOpnCmd->SetParameterName("MeshName",false);
122   //                                               90   //
123   meshClsCmd = new G4UIcmdWithoutParameter("/s <<  91   meshClsCmd = new G4UIcmdWithoutParameter("/score/close",this);
124   meshClsCmd->SetGuidance("Close scoring mesh.     92   meshClsCmd->SetGuidance("Close scoring mesh.");
125                                                << 
126   meshDir = new G4UIdirectory("/score/mesh/"); << 
127   meshDir->SetGuidance("    Mesh processing co << 
128   //                                               93   //
129   mBoxSizeCmd = new G4UIcmdWith3VectorAndUnit( <<  94 //  meshActCmd = new G4UIcmdWithABool("/score/mesh/activate",this);
                                                   >>  95 //  meshActCmd->SetGuidance("Activate scoring mesh.");
                                                   >>  96 //  meshActCmd->SetParameterName("MeshName",false);
                                                   >>  97   //
                                                   >>  98   mBoxSizeCmd = new G4UIcmdWith3VectorAndUnit("/score/mesh/boxSize",this);
130   mBoxSizeCmd->SetGuidance("Define size of the     99   mBoxSizeCmd->SetGuidance("Define size of the scoring mesh.");
131   mBoxSizeCmd->SetGuidance("Dx  Dy  Dz  unit")    100   mBoxSizeCmd->SetGuidance("Dx  Dy  Dz  unit");
132   mBoxSizeCmd->SetParameterName("Di", "Dj", "D << 101   mBoxSizeCmd->SetParameterName("Di","Dj","Dk",false,false);
133   mBoxSizeCmd->SetRange("Di>0. && Dj>0. && Dk>    102   mBoxSizeCmd->SetRange("Di>0. && Dj>0. && Dk>0.");
134   mBoxSizeCmd->SetDefaultUnit("mm");              103   mBoxSizeCmd->SetDefaultUnit("mm");
135   //                                              104   //
136   mCylinderSizeCmd = new G4UIcommand("/score/m << 105   mCylinderSizeCmd = new G4UIcommand("/score/mesh/cylinderSize",this);
137   mCylinderSizeCmd->SetGuidance("Define size o    106   mCylinderSizeCmd->SetGuidance("Define size of the scoring mesh.");
138   mCylinderSizeCmd->SetGuidance("R   Dz  unit"    107   mCylinderSizeCmd->SetGuidance("R   Dz  unit");
139   param = new G4UIparameter("R", 'd', false);  << 108   param = new G4UIparameter("R",'d',false);
140   param->SetParameterRange("R>0");                109   param->SetParameterRange("R>0");
141   mCylinderSizeCmd->SetParameter(param);          110   mCylinderSizeCmd->SetParameter(param);
142   param = new G4UIparameter("Dz", 'd', false); << 111   param = new G4UIparameter("Dz",'d',false);
143   param->SetParameterRange("Dz>0");               112   param->SetParameterRange("Dz>0");
144   mCylinderSizeCmd->SetParameter(param);          113   mCylinderSizeCmd->SetParameter(param);
145   param = new G4UIparameter("unit", 's', true) << 114   param = new G4UIparameter("unit",'s',true);
146   param->SetDefaultUnit("mm");                 << 115   param->SetDefaultValue("mm");
147   mCylinderSizeCmd->SetParameter(param);          116   mCylinderSizeCmd->SetParameter(param);
148   //                                              117   //
149   mCylinderRMinCmd =                           << 
150     new G4UIcmdWithADoubleAndUnit("/score/mesh << 
151   mCylinderRMinCmd->SetGuidance("Define the in << 
152   mCylinderRMinCmd->SetGuidance("This command  << 
153   mCylinderRMinCmd->SetParameterName("RMin", f << 
154   mCylinderRMinCmd->SetRange("RMin>=0.");      << 
155   mCylinderRMinCmd->SetDefaultUnit("mm");      << 
156   //                                           << 
157   mCylinderAngleCmd = new G4UIcommand("/score/ << 
158   mCylinderAngleCmd->SetGuidance(              << 
159     "Define starting angle and span for tube s << 
160   mCylinderAngleCmd->SetGuidance(              << 
161     "This command is not needed for cylinder m << 
162   param = new G4UIparameter("startPhi", 'd', f << 
163   mCylinderAngleCmd->SetParameter(param);      << 
164   param = new G4UIparameter("deltaPhi", 'd', f << 
165   param->SetParameterRange("deltaPhi>0.");     << 
166   mCylinderAngleCmd->SetParameter(param);      << 
167   param = new G4UIparameter("unit", 's', true) << 
168   param->SetDefaultUnit("deg");                << 
169   mCylinderAngleCmd->SetParameter(param);      << 
170   //                                           << 
171   //   Division command                           118   //   Division command
172   mBinCmd = new G4UIcommand("/score/mesh/nBin" << 119   mBinCmd = new G4UIcommand("/score/mesh/nBin",this);
173   mBinCmd->SetGuidance("Define segments of the    120   mBinCmd->SetGuidance("Define segments of the scoring mesh.");
174   mBinCmd->SetGuidance("[usage] /score/mesh/nB    121   mBinCmd->SetGuidance("[usage] /score/mesh/nBin");
175   mBinCmd->SetGuidance(" In case of boxMesh, p    122   mBinCmd->SetGuidance(" In case of boxMesh, parameters are given in");
176   mBinCmd->SetGuidance("   Ni  :(int) Number o    123   mBinCmd->SetGuidance("   Ni  :(int) Number of bins i (in x-axis) ");
177   mBinCmd->SetGuidance("   Nj  :(int) Number o    124   mBinCmd->SetGuidance("   Nj  :(int) Number of bins j (in y-axis) ");
178   mBinCmd->SetGuidance("   Nk  :(int) Number o    125   mBinCmd->SetGuidance("   Nk  :(int) Number of bins k (in z-axis) ");
179   mBinCmd->SetGuidance(" In case of cylinderMe    126   mBinCmd->SetGuidance(" In case of cylinderMesh, parameters are given in");
180   mBinCmd->SetGuidance("   Nr  :(int) Number o    127   mBinCmd->SetGuidance("   Nr  :(int) Number of bins in radial axis ");
181   mBinCmd->SetGuidance("   Nz  :(int) Number o    128   mBinCmd->SetGuidance("   Nz  :(int) Number of bins in z axis ");
182   mBinCmd->SetGuidance("   Nphi:(int) Number o    129   mBinCmd->SetGuidance("   Nphi:(int) Number of bins in phi axis ");
183                                                << 130   //mBinCmd->SetGuidance("  Axis:(int) Axis of division ");
184   param = new G4UIparameter("Ni", 'i', false); << 131 //  mBinCmd->SetGuidance("  P1..Pn-1  :(double) \"paramter from P1 to Pn-1 for division.\"");
                                                   >> 132   param = new G4UIparameter("Ni",'i',false);
185   param->SetDefaultValue("1");                    133   param->SetDefaultValue("1");
186   param->SetParameterRange("Ni>0");               134   param->SetParameterRange("Ni>0");
187   mBinCmd->SetParameter(param);                   135   mBinCmd->SetParameter(param);
188   param = new G4UIparameter("Nj", 'i', false); << 136   param = new G4UIparameter("Nj",'i',false);
189   param->SetDefaultValue("1");                    137   param->SetDefaultValue("1");
190   param->SetParameterRange("Nj>0");               138   param->SetParameterRange("Nj>0");
191   mBinCmd->SetParameter(param);                   139   mBinCmd->SetParameter(param);
192   param = new G4UIparameter("Nk", 'i', false); << 140   param = new G4UIparameter("Nk",'i',false);
193   param->SetDefaultValue("1");                    141   param->SetDefaultValue("1");
194   mBinCmd->SetParameter(param);                   142   mBinCmd->SetParameter(param);
195   param->SetParameterRange("Nk>0");               143   param->SetParameterRange("Nk>0");
196                                                << 144   //param = new G4UIparameter("Axis",'i',true);
                                                   >> 145   //param->SetDefaultValue("3");
                                                   >> 146   //mBinCmd->SetParameter(param);
                                                   >> 147   //
197   //   Placement command                          148   //   Placement command
198   mTransDir = new G4UIdirectory("/score/mesh/t    149   mTransDir = new G4UIdirectory("/score/mesh/translate/");
199   mTransDir->SetGuidance("Mesh translation com    150   mTransDir->SetGuidance("Mesh translation commands.");
200   //                                              151   //
201   mTResetCmd = new G4UIcmdWithoutParameter("/s << 152   mTResetCmd = new G4UIcmdWithoutParameter("/score/mesh/translate/reset",this);
202   mTResetCmd->SetGuidance("Reset translated po    153   mTResetCmd->SetGuidance("Reset translated position of the scoring mesh.");
203   //                                              154   //
204   mTXyzCmd = new G4UIcmdWith3VectorAndUnit("/s << 155   mTXyzCmd = new G4UIcmdWith3VectorAndUnit("/score/mesh/translate/xyz",this);
205   mTXyzCmd->SetGuidance("Translate the scoring    156   mTXyzCmd->SetGuidance("Translate the scoring mesh.");
206   mTXyzCmd->SetParameterName("X", "Y", "Z", fa << 157   mTXyzCmd->SetParameterName("X","Y","Z",false,false);
207   mTXyzCmd->SetDefaultUnit("mm");                 158   mTXyzCmd->SetDefaultUnit("mm");
208   //                                              159   //
209   mRotDir = new G4UIdirectory("/score/mesh/rot    160   mRotDir = new G4UIdirectory("/score/mesh/rotate/");
210   mRotDir->SetGuidance("Mesh rotation commands    161   mRotDir->SetGuidance("Mesh rotation commands.");
211                                                << 162   //
212   mRotXCmd = new G4UIcmdWithADoubleAndUnit("/s << 163   mRResetCmd = new G4UIcmdWithoutParameter("/score/mesh/rotate/reset",this);
                                                   >> 164   mRResetCmd->SetGuidance("Reset rotation angles of the scoring mesh.");
                                                   >> 165   //
                                                   >> 166   mRotXCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateX",this);
213   mRotXCmd->SetGuidance("Rotate the scoring me    167   mRotXCmd->SetGuidance("Rotate the scoring mesh in X axis.");
214   mRotXCmd->SetParameterName("Rx", false);     << 168   mRotXCmd->SetParameterName("Rx",false);
215   mRotXCmd->SetDefaultUnit("deg");                169   mRotXCmd->SetDefaultUnit("deg");
216   //                                              170   //
217   mRotYCmd = new G4UIcmdWithADoubleAndUnit("/s << 171   mRotYCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateY",this);
218   mRotYCmd->SetGuidance("Rotate the scoring me    172   mRotYCmd->SetGuidance("Rotate the scoring mesh in Y axis.");
219   mRotYCmd->SetParameterName("Ry", false);     << 173   mRotYCmd->SetParameterName("Ry",false);
220   mRotYCmd->SetDefaultUnit("deg");                174   mRotYCmd->SetDefaultUnit("deg");
221   //                                              175   //
222   mRotZCmd = new G4UIcmdWithADoubleAndUnit("/s << 176   mRotZCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateZ",this);
223   mRotZCmd->SetGuidance("Rotate the scoring me    177   mRotZCmd->SetGuidance("Rotate the scoring mesh in Z axis.");
224   mRotZCmd->SetParameterName("Rz", false);     << 178   mRotZCmd->SetParameterName("Rz",false);
225   mRotZCmd->SetDefaultUnit("deg");                179   mRotZCmd->SetDefaultUnit("deg");
226   //                                              180   //
227   probeDir = new G4UIdirectory("/score/probe/" << 
228   probeDir->SetGuidance("Probe commands");     << 
229                                                << 
230   probeMatCmd = new G4UIcmdWithAString("/score << 
231   probeMatCmd->SetGuidance("Specify a material << 
232   probeMatCmd->SetGuidance("Material name has  << 
233   probeMatCmd->SetGuidance("Once this command  << 
234                            "overlays the mater << 
235   probeMatCmd->SetGuidance("with \"Layered Mas << 
236                            "physics quantities << 
237   probeMatCmd->SetGuidance("or dose will be ca << 
238   probeMatCmd->SetGuidance("To switch-off this << 
239   probeMatCmd->SetParameterName("matName", tru << 
240   probeMatCmd->SetDefaultValue("none");        << 
241                                                << 
242   probeLocateCmd = new G4UIcmdWith3VectorAndUn << 
243   probeLocateCmd->SetGuidance(                 << 
244     "Locate a probe in the global coordinate s << 
245   probeLocateCmd->SetParameterName("x", "y", " << 
246   probeLocateCmd->SetDefaultUnit("mm");        << 
247                                                   181 
248   // Draw Scoring result                          182   // Draw Scoring result
249   drawCmd = new G4UIcommand("/score/drawProjec << 183   drawCmd = new G4UIcommand("/score/drawProjection",this);
250   drawCmd->SetGuidance("Draw projection(s) of     184   drawCmd->SetGuidance("Draw projection(s) of scored quantities.");
251   drawCmd->SetGuidance(                        << 185   drawCmd->SetGuidance("Parameter <proj> specified which projection(s) to be drawn.");
252     "Parameter <proj> specified which projecti << 186   drawCmd->SetGuidance("  100 : xy-plane, 010 : yz-plane,    001 : zx-plane -- default 111");
253   drawCmd->SetGuidance(                        << 187   drawCmd->SetGuidance("  100 : N/A,      010 : z_phi-plane, 001 : r_phi-plane -- default 111");
254     "  100 : xy-plane, 010 : yz-plane,    001  << 188   param = new G4UIparameter("meshName",'s',false);
255   drawCmd->SetGuidance(                        << 
256     "  100 : N/A,      010 : z_phi-plane, 001  << 
257   param = new G4UIparameter("meshName", 's', f << 
258   drawCmd->SetParameter(param);                   189   drawCmd->SetParameter(param);
259   param = new G4UIparameter("psName", 's', fal << 190   param = new G4UIparameter("psName",'s',false);
260   drawCmd->SetParameter(param);                   191   drawCmd->SetParameter(param);
261   param = new G4UIparameter("colorMapName", 's << 192   param = new G4UIparameter("colorMapName",'s',true);
262   param->SetDefaultValue("defaultLinearColorMa    193   param->SetDefaultValue("defaultLinearColorMap");
263   drawCmd->SetParameter(param);                   194   drawCmd->SetParameter(param);
264   param = new G4UIparameter("proj", 'i', true) << 195   param = new G4UIparameter("proj",'i',true);
265   param->SetDefaultValue(111);                    196   param->SetDefaultValue(111);
266   drawCmd->SetParameter(param);                   197   drawCmd->SetParameter(param);
267   drawCmd->SetToBeBroadcasted(false);          << 
268                                                   198 
269   // Draw column                                  199   // Draw column
270   drawColumnCmd = new G4UIcommand("/score/draw << 200   drawColumnCmd = new G4UIcommand("/score/drawColumn",this);
271   drawColumnCmd->SetGuidance("Draw a cell colu    201   drawColumnCmd->SetGuidance("Draw a cell column.");
272   drawColumnCmd->SetGuidance(" plane = 0 : x-y    202   drawColumnCmd->SetGuidance(" plane = 0 : x-y, 1: y-z, 2: z-x  for box mesh");
273   drawColumnCmd->SetGuidance(                  << 203   drawColumnCmd->SetGuidance("         0 : z-phi, 1: r-phi, 2: r-z  for cylinder mesh");
274     "         0 : z-phi, 1: r-phi, 2: r-z  for << 204   param = new G4UIparameter("meshName",'s',false);
275   param = new G4UIparameter("meshName", 's', f << 
276   drawColumnCmd->SetParameter(param);             205   drawColumnCmd->SetParameter(param);
277   param = new G4UIparameter("psName", 's', fal << 206   param = new G4UIparameter("psName",'s',false);
278   drawColumnCmd->SetParameter(param);             207   drawColumnCmd->SetParameter(param);
279   param = new G4UIparameter("plane", 'i', fals << 208   param = new G4UIparameter("plane",'i',false);
280   param->SetParameterRange("plane>=0 && plane<    209   param->SetParameterRange("plane>=0 && plane<=2");
281   drawColumnCmd->SetParameter(param);             210   drawColumnCmd->SetParameter(param);
282   param = new G4UIparameter("column", 'i', fal << 211   param = new G4UIparameter("column",'i',false);
283   drawColumnCmd->SetParameter(param);             212   drawColumnCmd->SetParameter(param);
284   param = new G4UIparameter("colorMapName", 's << 213   param = new G4UIparameter("colorMapName",'s',true);
285   param->SetDefaultValue("defaultLinearColorMa    214   param->SetDefaultValue("defaultLinearColorMap");
286   drawColumnCmd->SetParameter(param);             215   drawColumnCmd->SetParameter(param);
287   drawColumnCmd->SetToBeBroadcasted(false);    << 
288                                                   216 
289   colorMapDir = new G4UIdirectory("/score/colo    217   colorMapDir = new G4UIdirectory("/score/colorMap/");
290   colorMapDir->SetGuidance("Color map commands    218   colorMapDir->SetGuidance("Color map commands.");
291                                                   219 
292   listColorMapCmd =                            << 220   listColorMapCmd = new G4UIcmdWithoutParameter("/score/colorMap/listScoreColorMaps",this);
293     new G4UIcmdWithoutParameter("/score/colorM << 
294   listColorMapCmd->SetGuidance("List registere    221   listColorMapCmd->SetGuidance("List registered score color maps.");
295   listColorMapCmd->SetToBeBroadcasted(false);  << 
296                                                   222 
297   floatMinMaxCmd = new G4UIcmdWithAString("/sc << 223   floatMinMaxCmd = new G4UIcmdWithAString("/score/colorMap/floatMinMax",this);
298   floatMinMaxCmd->SetGuidance(                 << 224   floatMinMaxCmd->SetGuidance("Min/Max of the color map is calculated accorging to the actual scores.");
299     "Min/Max of the color map is calculated ac << 225   floatMinMaxCmd->SetParameterName("colorMapName",true,false);
300   floatMinMaxCmd->SetParameterName("colorMapNa << 
301   floatMinMaxCmd->SetDefaultValue("defaultLine    226   floatMinMaxCmd->SetDefaultValue("defaultLinearColorMap");
302   floatMinMaxCmd->SetToBeBroadcasted(false);   << 
303                                                   227 
304   colorMapMinMaxCmd = new G4UIcommand("/score/ << 228   colorMapMinMaxCmd = new G4UIcommand("/score/colorMap/setMinMax",this);
305   colorMapMinMaxCmd->SetGuidance("Define min/m    229   colorMapMinMaxCmd->SetGuidance("Define min/max value of the color map.");
306   param = new G4UIparameter("colorMapMame", 's << 230   param = new G4UIparameter("colorMapMame",'s',true);
307   param->SetDefaultValue("defaultLinearColorMa    231   param->SetDefaultValue("defaultLinearColorMap");
308   colorMapMinMaxCmd->SetParameter(param);         232   colorMapMinMaxCmd->SetParameter(param);
309   param = new G4UIparameter("minValue", 'd', f << 233   param = new G4UIparameter("minValue",'d',false);
310   colorMapMinMaxCmd->SetParameter(param);         234   colorMapMinMaxCmd->SetParameter(param);
311   param = new G4UIparameter("maxValue", 'd', f << 235   param = new G4UIparameter("maxValue",'d',false);
312   colorMapMinMaxCmd->SetParameter(param);         236   colorMapMinMaxCmd->SetParameter(param);
313   colorMapMinMaxCmd->SetToBeBroadcasted(false) << 
314                                                   237 
315   // Dump a scored quantity                    << 238   /*
                                                   >> 239   chartCmd = new G4UIcommand("/score/drawChart",this);
                                                   >> 240   chartCmd->SetGuidance("Draw color chart on the screen.");
                                                   >> 241   chartCmd->SetGuidance("[usage] /score/drawChart");
                                                   >> 242   chartCmd->SetGuidance("  mesh    :(String) Mesh name.");
                                                   >> 243   chartCmd->SetGuidance("  psname  :(String) PS name.");
                                                   >> 244   chartCmd->SetGuidance("  On/Off  :(boolean) On or Off the color chart.");
                                                   >> 245   chartCmd->SetGuidance("  scale   :(String) default=linear, or log ");
                                                   >> 246   param = new G4UIparameter("meshName",'s',false);
                                                   >> 247   chartCmd->SetParameter(param);
                                                   >> 248   param = new G4UIparameter("psName",'s',false);
                                                   >> 249   chartCmd->SetParameter(param);
                                                   >> 250   param = new G4UIparameter("On",'s',true);
                                                   >> 251   param->SetDefaultValue("true");
                                                   >> 252   chartCmd->SetParameter(param);
                                                   >> 253   param = new G4UIparameter("scale",'s',true);
                                                   >> 254   param->SetDefaultValue("linear");
                                                   >> 255   chartCmd->SetParameter(param);
                                                   >> 256   */
                                                   >> 257 
                                                   >> 258   // Dump a scored quantity 
316   dumpQtyToFileCmd = new G4UIcommand("/score/d    259   dumpQtyToFileCmd = new G4UIcommand("/score/dumpQuantityToFile", this);
317   dumpQtyToFileCmd->SetGuidance("Dump one scor    260   dumpQtyToFileCmd->SetGuidance("Dump one scored quantity to file.");
318   param = new G4UIparameter("meshName", 's', f    261   param = new G4UIparameter("meshName", 's', false);
319   dumpQtyToFileCmd->SetParameter(param);          262   dumpQtyToFileCmd->SetParameter(param);
320   param = new G4UIparameter("psName", 's', fal    263   param = new G4UIparameter("psName", 's', false);
321   dumpQtyToFileCmd->SetParameter(param);          264   dumpQtyToFileCmd->SetParameter(param);
322   param = new G4UIparameter("fileName", 's', f    265   param = new G4UIparameter("fileName", 's', false);
323   dumpQtyToFileCmd->SetParameter(param);          266   dumpQtyToFileCmd->SetParameter(param);
324   param = new G4UIparameter("option", 's', tru    267   param = new G4UIparameter("option", 's', true);
325   dumpQtyToFileCmd->SetParameter(param);          268   dumpQtyToFileCmd->SetParameter(param);
326   dumpQtyToFileCmd->SetToBeBroadcasted(false); << 
327                                                << 
328   dumpQtyWithFactorCmd = new G4UIcommand("/sco << 
329   dumpQtyWithFactorCmd->SetGuidance("Dump one  << 
330   dumpQtyWithFactorCmd->SetGuidance(           << 
331     "Each value is multiplied by the specified << 
332   param = new G4UIparameter("meshName", 's', f << 
333   dumpQtyWithFactorCmd->SetParameter(param);   << 
334   param = new G4UIparameter("psName", 's', fal << 
335   dumpQtyWithFactorCmd->SetParameter(param);   << 
336   param = new G4UIparameter("fileName", 's', f << 
337   dumpQtyWithFactorCmd->SetParameter(param);   << 
338   param = new G4UIparameter("factor", 'd', fal << 
339   param->SetParameterRange("factor>0.");       << 
340   dumpQtyWithFactorCmd->SetParameter(param);   << 
341   param = new G4UIparameter("option", 's', tru << 
342   dumpQtyWithFactorCmd->SetParameter(param);   << 
343   dumpQtyWithFactorCmd->SetToBeBroadcasted(fal << 
344                                                   269 
345   // Dump all scored quantities                   270   // Dump all scored quantities
346   dumpAllQtsToFileCmd = new G4UIcommand("/scor    271   dumpAllQtsToFileCmd = new G4UIcommand("/score/dumpAllQuantitiesToFile", this);
347   dumpAllQtsToFileCmd->SetGuidance("Dump all q    272   dumpAllQtsToFileCmd->SetGuidance("Dump all quantities of the mesh to file.");
348   param = new G4UIparameter("meshName", 's', f    273   param = new G4UIparameter("meshName", 's', false);
349   dumpAllQtsToFileCmd->SetParameter(param);       274   dumpAllQtsToFileCmd->SetParameter(param);
350   param = new G4UIparameter("fileName", 's', f    275   param = new G4UIparameter("fileName", 's', false);
351   dumpAllQtsToFileCmd->SetParameter(param);       276   dumpAllQtsToFileCmd->SetParameter(param);
352   param = new G4UIparameter("option", 's', tru    277   param = new G4UIparameter("option", 's', true);
353   dumpAllQtsToFileCmd->SetParameter(param);       278   dumpAllQtsToFileCmd->SetParameter(param);
354   dumpAllQtsToFileCmd->SetToBeBroadcasted(fals << 
355                                                   279 
356   dumpAllQtsWithFactorCmd =                    << 
357     new G4UIcommand("/score/dumpAllQuantitiesW << 
358   dumpAllQtsWithFactorCmd->SetGuidance(        << 
359     "Dump all quantities of the mesh to file." << 
360   dumpAllQtsWithFactorCmd->SetGuidance(        << 
361     "Each value is multiplied by the specified << 
362   param = new G4UIparameter("meshName", 's', f << 
363   dumpAllQtsWithFactorCmd->SetParameter(param) << 
364   param = new G4UIparameter("fileName", 's', f << 
365   dumpAllQtsWithFactorCmd->SetParameter(param) << 
366   param = new G4UIparameter("factor", 'd', fal << 
367   param->SetParameterRange("factor>0.");       << 
368   dumpAllQtsWithFactorCmd->SetParameter(param) << 
369   param = new G4UIparameter("option", 's', tru << 
370   dumpAllQtsWithFactorCmd->SetParameter(param) << 
371   dumpAllQtsWithFactorCmd->SetToBeBroadcasted( << 
372                                                << 
373   fill1DCmd = new G4UIcommand("/score/fill1D", << 
374   fill1DCmd->SetGuidance("Let a primitive scor << 
375   fill1DCmd->SetGuidance("Before using this co << 
376                          "defined and assigned << 
377   fill1DCmd->SetGuidance("Also before using th << 
378                          "be defined by /analy << 
379   fill1DCmd->SetGuidance(                      << 
380     "This command is available only for real-w << 
381   fill1DCmd->SetGuidance("Please note that thi << 
382                          "each copy number of  << 
383   fill1DCmd->SetGuidance("If same histogram ID << 
384                          "than one scorers fil << 
385   param = new G4UIparameter("histID", 'i', fal << 
386   fill1DCmd->SetParameter(param);              << 
387   param = new G4UIparameter("meshName", 's', f << 
388   fill1DCmd->SetParameter(param);              << 
389   param = new G4UIparameter("scorerName", 's', << 
390   fill1DCmd->SetParameter(param);              << 
391   param = new G4UIparameter("copyNo", 'i', tru << 
392   param->SetDefaultValue(0);                   << 
393   fill1DCmd->SetParameter(param);              << 
394 }                                                 280 }
395                                                   281 
396 G4ScoringMessenger::~G4ScoringMessenger()         282 G4ScoringMessenger::~G4ScoringMessenger()
397 {                                                 283 {
398   delete listCmd;                              << 284     delete listCmd;
399   delete verboseCmd;                           << 285     delete verboseCmd;
400   //                                           << 286     //
401   delete meshBoxCreateCmd;                     << 287     delete           meshCreateDir;
402   delete meshCylinderCreateCmd;                << 288     delete           meshBoxCreateCmd;
403   delete meshRWLogVolCreateCmd;                << 289     delete           meshCylinderCreateCmd;
404   delete probeCreateCmd;                       << 290 //    delete           meshSphereCreateCmd;
405   delete meshCreateDir;                        << 291     //
406   //                                           << 292     delete          meshOpnCmd;
407   delete meshOpnCmd;                           << 293     //
408   //                                           << 294     delete    meshClsCmd;
409   delete meshClsCmd;                           << 295 //    delete    meshActCmd;
410   delete meshDir;                              << 296     delete          meshDir;
411   //                                           << 297     //
412   delete mBoxSizeCmd;                          << 298     delete  mBoxSizeCmd;
413   delete mCylinderSizeCmd;                     << 299     delete  mCylinderSizeCmd;
414   delete mCylinderRMinCmd;                     << 300 //    delete  mSphereSizeCmd;
415   delete mCylinderAngleCmd;                    << 301     //
416   //                                           << 302     delete      mBinCmd;
417   delete mBinCmd;                              << 303     //
418   //                                           << 304     delete   mTResetCmd;
419   delete mTResetCmd;                           << 305     delete   mTXyzCmd;
420   delete mTXyzCmd;                             << 306     delete   mTransDir;
421   delete mTransDir;                            << 307     delete   mRResetCmd;
422   delete mRotXCmd;                             << 308     delete   mRotXCmd;
423   delete mRotYCmd;                             << 309     delete   mRotYCmd;
424   delete mRotZCmd;                             << 310     delete   mRotZCmd;
425   delete mRotDir;                              << 311     delete   mRotDir;
426   //                                           << 312     //
427   delete probeLocateCmd;                       << 313     delete     chartCmd;
428   delete probeMatCmd;                          << 314     delete     dumpCmd;
429   delete probeDir;                             << 315     delete     drawCmd;
430   //                                           << 316     delete     drawColumnCmd;
431   delete dumpCmd;                              << 317     delete     listColorMapCmd;
432   delete drawCmd;                              << 318     delete     floatMinMaxCmd;
433   delete drawColumnCmd;                        << 319     delete     colorMapMinMaxCmd;
434   delete listColorMapCmd;                      << 320     delete     colorMapDir;
435   delete floatMinMaxCmd;                       << 321     delete     dumpQtyToFileCmd;
436   delete colorMapMinMaxCmd;                    << 322     delete     dumpAllQtsToFileCmd;
437   delete colorMapDir;                          << 323     //
438   delete dumpQtyToFileCmd;                     << 324     delete scoreDir;
439   delete dumpQtyWithFactorCmd;                 << 
440   delete dumpAllQtsToFileCmd;                  << 
441   delete dumpAllQtsWithFactorCmd;              << 
442   delete fill1DCmd;                            << 
443   //                                           << 
444   delete scoreDir;                             << 
445 }                                                 325 }
446                                                   326 
447 void G4ScoringMessenger::SetNewValue(G4UIcomma << 327 void G4ScoringMessenger::SetNewValue(G4UIcommand * command,G4String newVal)
448 {                                                 328 {
449   using MeshShape = G4VScoringMesh::MeshShape; << 329   if(command==listCmd) { 
450                                                << 330       fSMan->List(); 
451   if(command == listCmd)                       << 331   } else if(command==dumpCmd) { 
452   {                                            << 332       fSMan->Dump(); 
453     fSMan->List();                             << 333   } else if(command==drawCmd) { 
454   }                                            << 
455   else if(command == dumpCmd)                  << 
456   {                                            << 
457     fSMan->Dump();                             << 
458   }                                            << 
459   else if(command == drawCmd)                  << 
460   {                                            << 
461     G4Tokenizer next(newVal);                  << 
462     G4String meshName     = next();            << 
463     G4String psName       = next();            << 
464     G4String colorMapName = next();            << 
465     G4int axflg           = StoI(next());      << 
466     fSMan->DrawMesh(meshName, psName, colorMap << 
467   }                                            << 
468   else if(command == drawColumnCmd)            << 
469   {                                            << 
470     G4Tokenizer next(newVal);                  << 
471     G4String meshName     = next();            << 
472     G4String psName       = next();            << 
473     G4int iPlane          = StoI(next());      << 
474     G4int iColumn         = StoI(next());      << 
475     G4String colorMapName = next();            << 
476     fSMan->DrawMesh(meshName, psName, iPlane,  << 
477   }                                            << 
478   else if(command == dumpQtyToFileCmd)         << 
479   {                                            << 
480     G4Tokenizer next(newVal);                  << 
481     G4String meshName = next();                << 
482     G4String psName   = next();                << 
483     G4String fileName = next();                << 
484     G4String option   = next("\n");            << 
485     auto mesh         = fSMan->FindMesh(meshNa << 
486     if(mesh == nullptr)                        << 
487     {                                          << 
488       G4ExceptionDescription ed;               << 
489       ed << "Mesh name <" << meshName << "> is << 
490       command->CommandFailed(ed);              << 
491       return;                                  << 
492     }                                          << 
493     fSMan->DumpQuantityToFile(meshName, psName << 
494   }                                            << 
495   else if(command == dumpQtyWithFactorCmd)     << 
496   {                                            << 
497     G4Tokenizer next(newVal);                  << 
498     G4String meshName = next();                << 
499     G4String psName   = next();                << 
500     G4String fileName = next();                << 
501     G4double fac      = StoD(next());          << 
502     G4String option   = next("\n");            << 
503     auto mesh         = fSMan->FindMesh(meshNa << 
504     if(mesh == nullptr)                        << 
505     {                                          << 
506       G4ExceptionDescription ed;               << 
507       ed << "Mesh name <" << meshName << "> is << 
508       command->CommandFailed(ed);              << 
509       return;                                  << 
510     }                                          << 
511     fSMan->SetFactor(fac);                     << 
512     fSMan->DumpQuantityToFile(meshName, psName << 
513     fSMan->SetFactor(1.0);                     << 
514   }                                            << 
515   else if(command == dumpAllQtsToFileCmd)      << 
516   {                                            << 
517     G4Tokenizer next(newVal);                  << 
518     G4String meshName = next();                << 
519     G4String fileName = next();                << 
520     G4String option   = next("\n");            << 
521     auto mesh         = fSMan->FindMesh(meshNa << 
522     if(mesh == nullptr)                        << 
523     {                                          << 
524       G4ExceptionDescription ed;               << 
525       ed << "Mesh name <" << meshName << "> is << 
526       command->CommandFailed(ed);              << 
527       return;                                  << 
528     }                                          << 
529     fSMan->DumpAllQuantitiesToFile(meshName, f << 
530   }                                            << 
531   else if(command == dumpAllQtsWithFactorCmd)  << 
532   {                                            << 
533     G4Tokenizer next(newVal);                  << 
534     G4String meshName = next();                << 
535     G4String fileName = next();                << 
536     G4double fac      = StoD(next());          << 
537     G4String option   = next("\n");            << 
538     auto mesh         = fSMan->FindMesh(meshNa << 
539     if(mesh == nullptr)                        << 
540     {                                          << 
541       G4ExceptionDescription ed;               << 
542       ed << "Mesh name <" << meshName << "> is << 
543       command->CommandFailed(ed);              << 
544       return;                                  << 
545     }                                          << 
546     fSMan->SetFactor(fac);                     << 
547     fSMan->DumpAllQuantitiesToFile(meshName, f << 
548     fSMan->SetFactor(1.0);                     << 
549   }                                            << 
550   else if(command == fill1DCmd)                << 
551   {                                            << 
552     Fill1D(command, newVal);                   << 
553   }                                            << 
554   else if(command == verboseCmd)               << 
555   {                                            << 
556     fSMan->SetVerboseLevel(verboseCmd->GetNewI << 
557   }                                            << 
558   else if(command == meshBoxCreateCmd)         << 
559   {                                            << 
560     G4VScoringMesh* currentmesh = fSMan->GetCu << 
561     if(currentmesh != nullptr)                 << 
562     {                                          << 
563       G4ExceptionDescription ed;               << 
564       ed << "ERROR[" << meshBoxCreateCmd->GetC << 
565          << currentmesh->GetWorldName()        << 
566          << "> is still open. Close it first.  << 
567       command->CommandFailed(ed);              << 
568     }                                          << 
569     else                                       << 
570     {                                          << 
571       G4VScoringMesh* mesh = fSMan->FindMesh(n << 
572       if(mesh == nullptr)                      << 
573       {                                        << 
574         mesh = new G4ScoringBox(newVal);       << 
575         fSMan->RegisterScoringMesh(mesh);      << 
576       }                                        << 
577       else                                     << 
578       {                                        << 
579         G4ExceptionDescription ed;             << 
580         ed << "ERROR[" << meshBoxCreateCmd->Ge << 
581            << "] : Scoring mesh <" << newVal   << 
582            << "> already exists. Command ignor << 
583         command->CommandFailed(ed);            << 
584       }                                        << 
585     }                                          << 
586   }                                            << 
587   else if(command == meshCylinderCreateCmd)    << 
588   {                                            << 
589     G4VScoringMesh* currentmesh = fSMan->GetCu << 
590     if(currentmesh != nullptr)                 << 
591     {                                          << 
592       G4ExceptionDescription ed;               << 
593       ed << "ERROR[" << meshCylinderCreateCmd- << 
594          << currentmesh->GetWorldName()        << 
595          << "> is still open. Close it first.  << 
596       command->CommandFailed(ed);              << 
597     }                                          << 
598     else                                       << 
599     {                                          << 
600       G4VScoringMesh* mesh = fSMan->FindMesh(n << 
601       if(mesh == nullptr)                      << 
602       {                                        << 
603         mesh = new G4ScoringCylinder(newVal);  << 
604         fSMan->RegisterScoringMesh(mesh);      << 
605       }                                        << 
606       else                                     << 
607       {                                        << 
608         G4ExceptionDescription ed;             << 
609         ed << "ERROR[" << meshCylinderCreateCm << 
610            << "] : Scoring mesh <" << newVal   << 
611            << "> already exists. Command ignor << 
612         command->CommandFailed(ed);            << 
613       }                                        << 
614     }                                          << 
615   }                                            << 
616   else if(command == meshRWLogVolCreateCmd)    << 
617   {                                            << 
618     auto mesh = fSMan->GetCurrentMesh();       << 
619     if(mesh != nullptr)                        << 
620     {                                          << 
621       G4ExceptionDescription ed;               << 
622       ed << "ERROR[" << meshRWLogVolCreateCmd- << 
623          << mesh->GetWorldName()               << 
624          << "> is still open. Close it first.  << 
625       command->CommandFailed(ed);              << 
626     }                                          << 
627     else                                       << 
628     {                                          << 
629       G4Tokenizer next(newVal);                   334       G4Tokenizer next(newVal);
630       G4String meshName = next();                 335       G4String meshName = next();
631       G4int idx         = StoI(next());        << 336       G4String psName = next();
632       mesh              = fSMan->FindMesh(mesh << 337       G4String colorMapName = next();
633       if(mesh == nullptr)                      << 338       G4int axflg = StoI(next());
634       {                                        << 339       fSMan->DrawMesh(meshName,psName,colorMapName,axflg);
635         mesh = new G4ScoringRealWorld(meshName << 340   } else if(command==drawColumnCmd) { 
636         mesh->SetCopyNumberLevel(idx);         << 
637         fSMan->RegisterScoringMesh(mesh);      << 
638       }                                        << 
639       else                                     << 
640       {                                        << 
641         G4ExceptionDescription ed;             << 
642         ed << "ERROR[" << meshRWLogVolCreateCm << 
643            << "] : Scoring mesh <" << meshName << 
644            << "> already exists. Command ignor << 
645         command->CommandFailed(ed);            << 
646       }                                        << 
647     }                                          << 
648   }                                            << 
649   else if(command == probeCreateCmd)           << 
650   {                                            << 
651     auto mesh = fSMan->GetCurrentMesh();       << 
652     if(mesh != nullptr)                        << 
653     {                                          << 
654       G4ExceptionDescription ed;               << 
655       ed << "ERROR[" << meshRWLogVolCreateCmd- << 
656          << mesh->GetWorldName()               << 
657          << "> is still open. Close it first.  << 
658       command->CommandFailed(ed);              << 
659     }                                          << 
660     else                                       << 
661     {                                          << 
662       G4Tokenizer next(newVal);                   341       G4Tokenizer next(newVal);
663       G4String qname    = next();              << 342       G4String meshName = next();
664       G4double halfSize = StoD(next());        << 343       G4String psName = next();
665       halfSize *= G4UIcommand::ValueOf(next()) << 344       G4int iPlane = StoI(next());
666       G4bool checkOverlap = StoB(next());      << 345       G4int iColumn = StoI(next());
667       mesh                = fSMan->FindMesh(qn << 346       G4String colorMapName = next();
668       if(mesh == nullptr)                      << 347       fSMan->DrawMesh(meshName,psName,iPlane,iColumn,colorMapName);
669       {                                        << 348   } else if(command==chartCmd ){
670         mesh = new G4ScoringProbe(qname, halfS << 349       G4Tokenizer next(newVal);
671         fSMan->RegisterScoringMesh(mesh);      << 350       G4String meshName = next();
672       }                                        << 351       G4String psName = next();
673       else                                     << 352       //G4bool   onFlag = StoB(next());
674       {                                        << 353       G4String scaleOption = next();
675         G4ExceptionDescription ed;             << 354 //      fSMan->DrawChart(meshName,psName,onFlag,scaleOption);
676         ed << "ERROR[" << probeCreateCmd->GetC << 
677            << qname << "> already exists. Use  << 
678         command->CommandFailed(ed);            << 
679       }                                        << 
680     }                                          << 
681   }                                            << 
682   else if(command == probeMatCmd || command == << 
683   {                                            << 
684     auto mesh = fSMan->GetCurrentMesh();       << 
685     if(mesh == nullptr)                        << 
686     {                                          << 
687       G4ExceptionDescription ed;               << 
688       ed << "ERROR : No mesh is currently open << 
689             "Command ignored.";                << 
690       command->CommandFailed(ed);              << 
691       return;                                  << 
692     }                                          << 
693     if(mesh->GetShape() != MeshShape::probe)   << 
694     {                                          << 
695       G4ExceptionDescription ed;               << 
696       ed << "ERROR : Inconsistent mesh type. C << 
697             "Scoring Probe.";                  << 
698       command->CommandFailed(ed);              << 
699       return;                                  << 
700     }                                          << 
701                                                   355 
702     if(command == probeMatCmd)                 << 356   } else if(command==dumpQtyToFileCmd) { 
703     {                                          << 357       G4Tokenizer next(newVal);
704       G4bool succ = static_cast<G4ScoringProbe << 358       G4String meshName = next();
705       if(!succ)                                << 359       G4String psName = next();
706       {                                        << 360       G4String fileName = next();
707         G4ExceptionDescription ed;             << 361       G4String option = next("\n");
708         ed << "Material <" << newVal           << 362       fSMan->DumpQuantityToFile(meshName, psName, fileName, option);
709            << "> is not defind in G4NistManage << 363   } else if(command==dumpAllQtsToFileCmd) { 
710            << "Use /material/nist/listMaterial << 364       G4Tokenizer next(newVal);
711               "materials.";                    << 365       G4String meshName = next();
712         command->CommandFailed(ed);            << 366       G4String fileName = next();
713         return;                                << 367       G4String option = next("\n");
714       }                                        << 368       fSMan->DumpAllQuantitiesToFile(meshName, fileName, option);
715     }                                          << 369   } else if(command==verboseCmd) { 
716     else if(command == probeLocateCmd)         << 370       fSMan->SetVerboseLevel(verboseCmd->GetNewIntValue(newVal)); 
717     {                                          << 371   } else if(command==meshBoxCreateCmd) {
718       G4ThreeVector loc = probeLocateCmd->GetN << 372       G4VScoringMesh* currentmesh = fSMan->GetCurrentMesh(); 
719       static_cast<G4ScoringProbe*>(mesh)->Loca << 373       if ( currentmesh ){
720     }                                          << 374   G4cerr << "ERROR[" << meshBoxCreateCmd->GetCommandPath()
721   }                                            << 375          << "] : Mesh <" << currentmesh->GetWorldName() 
722   else if(command == listColorMapCmd)          << 376          << "> is still open. Close it first. Command ignored." << G4endl;
723   {                                            << 377       } else {
724     fSMan->ListScoreColorMaps();               << 378 
725   }                                            << 379   G4VScoringMesh*  mesh = fSMan->FindMesh(newVal);
726   else if(command == floatMinMaxCmd)           << 380   if ( !mesh ){
727   {                                            << 381     mesh = new G4ScoringBox(newVal);
728     G4VScoreColorMap* colorMap = fSMan->GetSco << 382     fSMan->RegisterScoringMesh(mesh);
729     if(colorMap != nullptr)                    << 383   }else{
730     {                                          << 384     G4cerr << "ERROR[" << meshBoxCreateCmd->GetCommandPath()
731       colorMap->SetFloatingMinMax(true);       << 385      << "] : Scoring mesh <" << newVal
732     }                                          << 386      << "> already exists. Command ignored." << G4endl;
733     else                                       << 387   }
734     {                                          << 388       }
735       G4ExceptionDescription ed;               << 389   } else if(command==meshCylinderCreateCmd) {
736       ed << "ERROR[" << floatMinMaxCmd->GetCom << 390       G4VScoringMesh* currentmesh = fSMan->GetCurrentMesh(); 
737          << newVal << "> is not defined. Comma << 391       if ( currentmesh ){
738       command->CommandFailed(ed);              << 392   G4cerr << "ERROR[" << meshBoxCreateCmd->GetCommandPath()
739     }                                          << 393          << "] : Mesh <" << currentmesh->GetWorldName() 
740   }                                            << 394          << "> is still open. Close it first. Command ignored." << G4endl;
741   else if(command == colorMapMinMaxCmd)        << 395       } else {
742   {                                            << 396 
743     G4Tokenizer next(newVal);                  << 397   G4VScoringMesh*  mesh = fSMan->FindMesh(newVal);
744     G4String mapName           = next();       << 398   if ( !mesh ){
745     G4double minVal            = StoD(next()); << 399     mesh = new G4ScoringCylinder(newVal);
746     G4double maxVal            = StoD(next()); << 400     fSMan->RegisterScoringMesh(mesh);
747     G4VScoreColorMap* colorMap = fSMan->GetSco << 401   }else{
748     if(colorMap != nullptr)                    << 402     G4cerr << "ERROR[" << meshCylinderCreateCmd->GetCommandPath()
749     {                                          << 403      << "] : Scoring mesh <" << newVal
750       colorMap->SetFloatingMinMax(false);      << 404      << "> already exists. Command ignored." << G4endl;
751       colorMap->SetMinMax(minVal, maxVal);     << 405   }
752     }                                          << 406       }
753     else                                       << 407   } else if(command==listColorMapCmd) {
754     {                                          << 408       fSMan->ListScoreColorMaps();
755       G4ExceptionDescription ed;               << 409   } else if(command==floatMinMaxCmd) {
756       ed << "ERROR[" << colorMapMinMaxCmd->Get << 410       G4VScoreColorMap* colorMap = fSMan->GetScoreColorMap(newVal);
757          << newVal << "> is not defined. Comma << 411       if(colorMap)
758       command->CommandFailed(ed);              << 412       { colorMap->SetFloatingMinMax(true); }
759     }                                          << 
760   }                                            << 
761   else if(command == meshOpnCmd)               << 
762   {                                            << 
763     G4VScoringMesh* currentmesh = fSMan->GetCu << 
764     if(currentmesh != nullptr)                 << 
765     {                                          << 
766       G4ExceptionDescription ed;               << 
767       ed << "ERROR[" << meshOpnCmd->GetCommand << 
768          << currentmesh->GetWorldName()        << 
769          << "> is still open. Close it first.  << 
770       command->CommandFailed(ed);              << 
771     }                                          << 
772     else                                       << 
773     {                                          << 
774       G4VScoringMesh* mesh = fSMan->FindMesh(n << 
775       if(mesh == nullptr)                      << 
776       {                                        << 
777         G4ExceptionDescription ed;             << 
778         ed << "ERROR[" << meshOpnCmd->GetComma << 
779            << newVal << "> does not exist. Com << 
780         command->CommandFailed(ed);            << 
781       }                                        << 
782       else                                        413       else
783       {                                        << 414       { G4cerr << "ERROR[" << floatMinMaxCmd->GetCommandPath()
784         fSMan->SetCurrentMesh(mesh);           << 415          << "] : color map <" << newVal << "> is not defined. Command ignored." 
785       }                                        << 416          << G4endl; 
786     }                                          << 
787   }                                            << 
788   else if(command == meshClsCmd)               << 
789   {                                            << 
790     fSMan->CloseCurrentMesh();                 << 
791   }                                            << 
792   else                                         << 
793   {                                            << 
794     //                                         << 
795     // Get Current Mesh                        << 
796     //                                         << 
797     G4VScoringMesh* mesh = fSMan->GetCurrentMe << 
798     //                                         << 
799     // Commands for Current Mesh               << 
800     if(mesh != nullptr)                        << 
801     {                                          << 
802       MeshShape shape = mesh->GetShape();      << 
803       if(shape == MeshShape::realWorldLogVol)  << 
804       {                                        << 
805         G4ExceptionDescription ed;             << 
806         ed << "ERROR[" << mBinCmd->GetCommandP << 
807            << "] : Number of mesh command cann << 
808               "Command ignored.";              << 
809         command->CommandFailed(ed);            << 
810       }                                           417       }
                                                   >> 418   } else if(command==colorMapMinMaxCmd) {
                                                   >> 419       G4Tokenizer next(newVal);
                                                   >> 420       G4String mapName = next();
                                                   >> 421       G4double minVal = StoD(next());
                                                   >> 422       G4double maxVal = StoD(next());
                                                   >> 423       G4VScoreColorMap* colorMap = fSMan->GetScoreColorMap(mapName);
                                                   >> 424       if(colorMap)
                                                   >> 425       { colorMap->SetFloatingMinMax(false);
                                                   >> 426         colorMap->SetMinMax(minVal,maxVal); }
811       else                                        427       else
812       {                                        << 428       { G4cerr << "ERROR[" << colorMapMinMaxCmd->GetCommandPath()
813         // Tokens                              << 429          << "] : color map <" << newVal << "> is not defined. Command ignored." 
814         G4TokenVec token;                      << 430          << G4endl; 
815         FillTokenVec(newVal, token);           << 431       }
816         //                                     << 432   } else if(command==meshOpnCmd) {
817         // Mesh Geometry                       << 433       G4VScoringMesh* currentmesh = fSMan->GetCurrentMesh(); 
818         if(command == mBoxSizeCmd)             << 434       if ( currentmesh ){
819         {                                      << 435   G4cerr << "ERROR[" << meshOpnCmd->GetCommandPath()
820           if(shape == MeshShape::box)          << 436          << "] : Mesh <" << currentmesh->GetWorldName() << "> is still open. Close it first. Command ignored." << G4endl;
821           {                                    << 437       } else {
822             G4ThreeVector size = mBoxSizeCmd-> << 438   G4VScoringMesh* mesh = fSMan->FindMesh(newVal); 
823             G4double vsize[3];                 << 439   if ( !mesh ){
824             vsize[0] = size.x();               << 440           G4cerr << "ERROR[" << meshOpnCmd->GetCommandPath()
825             vsize[1] = size.y();               << 441      << "] : Scoring mesh <" << newVal << "> does not exist. Command ignored." << G4endl;
826             vsize[2] = size.z();               << 442   } else {
827             mesh->SetSize(vsize);              << 443     fSMan->SetCurrentMesh(mesh);
828           }                                    << 444   }
829           else                                 << 445       }
830           {                                    << 446   } else if(command==meshClsCmd) {
831             G4ExceptionDescription ed;         << 447       fSMan->CloseCurrentMesh();
832             ed << "ERROR[" << mBoxSizeCmd->Get << 448   } else {
833                << "] : This mesh is not Box. C << 449       //
834             command->CommandFailed(ed);        << 450       // Get Current Mesh
835           }                                    << 451       //
836         }                                      << 452       G4VScoringMesh* mesh = fSMan->GetCurrentMesh();
837         else if(command == mCylinderSizeCmd || << 453       //
838                 command == mCylinderAngleCmd)  << 454       // Commands for Current Mesh
839         {                                      << 455       if ( mesh ){
840           if(shape != MeshShape::cylinder)     << 456           // Tokens
841           {                                    << 457           G4TokenVec token;
842             G4ExceptionDescription ed;         << 458           FillTokenVec(newVal,token);
843             ed << "ERROR[" << command->GetComm << 459     // 
844                << "] : This mesh is not Cylind << 460     // Mesh Geometry
845             command->CommandFailed(ed);        << 461     //
846           }                                    << 462 //    if(command==meshActCmd) {
847           else                                 << 463 //        mesh->Activate(meshActCmd->GetNewBoolValue(newVal)); 
848           {                                    << 464 //    } else
849             if(command == mCylinderSizeCmd)    << 465           if(command==mBoxSizeCmd) {
850             {                                  << 466         MeshShape shape = mesh->GetShape();
851               G4double vsize[3];               << 467         if ( shape == boxMesh ){
852               vsize[0]     = (mesh->GetSize()) << 468       G4ThreeVector size = mBoxSizeCmd->GetNew3VectorValue(newVal);
853               vsize[1]     = StoD(token[0]);   << 469       G4double vsize[3];
854               vsize[2]     = StoD(token[1]);   << 470       vsize[0] = size.x();
855               G4double unt = mCylinderSizeCmd- << 471       vsize[1] = size.y();
856               vsize[1] *= unt;                 << 472       vsize[2] = size.z();
857               vsize[2] *= unt;                 << 473       mesh->SetSize(vsize);
858               mesh->SetSize(vsize);            << 474         } else {
859             }                                  << 475                  G4cerr << "ERROR[" << mBoxSizeCmd->GetCommandPath()
860             else if(command == mCylinderRMinCm << 476       << "] : This mesh is not Box. Command ignored." << G4endl;
861             {                                  << 477         }
862               G4double vsize[3];               << 478     }else if(command==mCylinderSizeCmd) {
863               vsize[0] = mCylinderRMinCmd->Get << 479         MeshShape shape = mesh->GetShape();
864               vsize[1] = (mesh->GetSize()).y() << 480         if ( shape == cylinderMesh ){
865               vsize[2] = (mesh->GetSize()).z() << 481       G4double vsize[3];
866               mesh->SetSize(vsize);            << 482       vsize[0]     = StoD(token[0]);
867             }                                  << 483       vsize[1]     = StoD(token[1]);
868             else if(command == mCylinderAngleC << 484       G4double unt = mCylinderSizeCmd->ValueOf(token[2]);
869             {                                  << 485       vsize[0] *= unt;
870               G4double stphi = StoD(token[0]); << 486       vsize[1] *= unt;
871               G4double spphi = StoD(token[1]); << 487       vsize[2]  = 0.0;
872               G4double unt   = mCylinderAngleC << 488       mesh->SetSize(vsize);
873               mesh->SetAngles(stphi * unt, spp << 489         } else {
874             }                                  << 490       G4cerr << "ERROR[" << mBoxSizeCmd->GetCommandPath()
875           }                                    << 491        << "] : This mesh is not Box. Command ignored." << G4endl;
876         }                                      << 492         }
877         else if(command == mBinCmd)            << 493     } else if(command==mBinCmd) {
878         {                                      << 494         MeshBinCommand(mesh,token);
879           MeshBinCommand(mesh, token);         << 495     } else if(command==mTResetCmd) {
880         }                                      << 496         G4double centerPosition[3] ={ 0., 0., 0.};
881         else if(command == mTResetCmd)         << 497         mesh->SetCenterPosition(centerPosition);
882         {                                      << 498     } else if(command==mTXyzCmd) {
883           G4double centerPosition[3] = { 0., 0 << 499         G4ThreeVector xyz = mTXyzCmd->GetNew3VectorValue(newVal);
884           mesh->SetCenterPosition(centerPositi << 500         G4double centerPosition[3];
885         }                                      << 501         centerPosition[0] = xyz.x();
886         else if(command == mTXyzCmd)           << 502         centerPosition[1] = xyz.y();
887         {                                      << 503         centerPosition[2] = xyz.z();
888           G4ThreeVector xyz = mTXyzCmd->GetNew << 504         mesh->SetCenterPosition(centerPosition);
889           G4double centerPosition[3];          << 505     } else if(command==mRResetCmd) {
890           centerPosition[0] = xyz.x();         << 506     } else if(command==mRotXCmd) {
891           centerPosition[1] = xyz.y();         << 507         G4double value = mRotXCmd->GetNewDoubleValue(newVal);
892           centerPosition[2] = xyz.z();         << 508         mesh->RotateX(value);
893           mesh->SetCenterPosition(centerPositi << 509     } else if(command==mRotYCmd) {
894         }                                      << 510         G4double value = mRotYCmd->GetNewDoubleValue(newVal);
895         else if(command == mRotXCmd)           << 511         mesh->RotateY(value);
896         {                                      << 512     } else if(command==mRotZCmd) {
897           G4double value = mRotXCmd->GetNewDou << 513         G4double value = mRotZCmd->GetNewDoubleValue(newVal);
898           mesh->RotateX(value);                << 514         mesh->RotateZ(value);
899         }                                      << 515     }
900         else if(command == mRotYCmd)           << 516       }else{
901         {                                      << 517         G4cerr << "ERROR: No mesh is currently open. Open/create a mesh first. Command ignored." << G4endl;
902           G4double value = mRotYCmd->GetNewDou << 
903           mesh->RotateY(value);                << 
904         }                                      << 
905         else if(command == mRotZCmd)           << 
906         {                                      << 
907           G4double value = mRotZCmd->GetNewDou << 
908           mesh->RotateZ(value);                << 
909         }                                      << 
910       }                                           518       }
911     }                                          << 
912     else                                       << 
913     {                                          << 
914       G4ExceptionDescription ed;               << 
915       ed << "ERROR: No mesh is currently open. << 
916             "Command ignored.";                << 
917       command->CommandFailed(ed);              << 
918     }                                          << 
919   }                                               519   }
920 }                                                 520 }
921                                                   521 
922 G4String G4ScoringMessenger::GetCurrentValue(G << 522 G4String G4ScoringMessenger::GetCurrentValue(G4UIcommand * command)
923 {                                                 523 {
924   G4String val;                                   524   G4String val;
925   if(command == verboseCmd)                    << 525   if(command==verboseCmd)
926   {                                            << 526   { val = verboseCmd->ConvertToString(fSMan->GetVerboseLevel()); }
927     val = verboseCmd->ConvertToString(fSMan->G << 
928   }                                            << 
929                                                   527 
930   return val;                                     528   return val;
931 }                                                 529 }
932                                                   530 
933 void G4ScoringMessenger::FillTokenVec(const G4 << 531 void G4ScoringMessenger::FillTokenVec(G4String newValues, G4TokenVec& token){
934 {                                              << 
935   G4Tokenizer next(newValues);                 << 
936   G4String val;                                << 
937   while(!(val = next()).empty())               << 
938   {  // Loop checking 12.18.2015 M.Asai        << 
939     token.push_back(val);                      << 
940   }                                            << 
941 }                                              << 
942                                                   532 
943 void G4ScoringMessenger::MeshBinCommand(G4VSco << 533     G4Tokenizer next(newValues);
944 {                                              << 534     G4String val;
945   G4int Ni = StoI(token[0]);                   << 535     while ( !(val = next()).isNull() ) {
946   G4int Nj = StoI(token[1]);                   << 536   token.push_back(val);
947   G4int Nk = StoI(token[2]);                   << 537     }
948   G4int nSegment[3];                           << 
949                                                << 
950   if(dynamic_cast<G4ScoringBox*>(mesh) != null << 
951   {                                            << 
952     G4cout << ".... G4ScoringMessenger::MeshBi << 
953            << G4endl;                          << 
954     nSegment[0] = Ni;                          << 
955     nSegment[1] = Nj;                          << 
956     nSegment[2] = Nk;                          << 
957   }                                            << 
958   else if(dynamic_cast<G4ScoringCylinder*>(mes << 
959   {                                            << 
960     G4cout << ".... G4ScoringMessenger::MeshBi << 
961            << G4endl;                          << 
962     nSegment[0] = Nj;                          << 
963     nSegment[1] = Nk;                          << 
964     nSegment[2] = Ni;                          << 
965   }                                            << 
966   else                                         << 
967   {                                            << 
968     G4Exception("G4ScoringMessenger::MeshBinCo << 
969                 "invalid mesh type");          << 
970     return;                                    << 
971   }                                            << 
972   //                                           << 
973   mesh->SetNumberOfSegments(nSegment);         << 
974 }                                                 538 }
975                                                   539 
976 void G4ScoringMessenger::Fill1D(G4UIcommand* c << 
977 {                                              << 
978   using MeshShape = G4VScoringMesh::MeshShape; << 
979                                                << 
980   G4Tokenizer next(newVal);                    << 
981   G4int histID      = StoI(next());            << 
982   G4String meshName = next();                  << 
983   G4String primName = next();                  << 
984   G4int copyNo      = StoI(next());            << 
985                                                << 
986   auto filler = G4VScoreHistFiller::Instance() << 
987   if(filler == nullptr)                        << 
988   {                                            << 
989     G4ExceptionDescription ed;                 << 
990     ed << "G4TScoreHistFiller is not instantia << 
991     cmd->CommandFailed(ed);                    << 
992     return;                                    << 
993   }                                            << 
994   //                                           << 
995   // To do : check the validity of histID      << 
996   //                                           << 
997                                                << 
998   auto sm   = G4ScoringManager::GetScoringMana << 
999   auto mesh = sm->FindMesh(meshName);          << 
1000   if(mesh == nullptr)                         << 
1001   {                                           << 
1002     G4ExceptionDescription ed;                << 
1003     ed << "Mesh name <" << meshName << "> is  << 
1004     cmd->CommandFailed(ed);                   << 
1005     return;                                   << 
1006   }                                           << 
1007   auto shape = mesh->GetShape();              << 
1008   if(shape != MeshShape::realWorldLogVol && s << 
1009   {                                           << 
1010     G4ExceptionDescription ed;                << 
1011     ed << "Mesh <" << meshName                << 
1012        << "> is not real-world logical volume << 
1013     cmd->CommandFailed(ed);                   << 
1014     return;                                   << 
1015   }                                           << 
1016                                               << 
1017   auto prim = mesh->GetPrimitiveScorer(primNa << 
1018   if(prim == nullptr)                         << 
1019   {                                           << 
1020     G4ExceptionDescription ed;                << 
1021     ed << "Primitive scorer name <" << primNa << 
1022     cmd->CommandFailed(ed);                   << 
1023     return;                                   << 
1024   }                                           << 
1025   auto pp = dynamic_cast<G4VPrimitivePlotter* << 
1026   if(pp == nullptr)                           << 
1027   {                                           << 
1028     G4ExceptionDescription ed;                << 
1029     ed << "Primitive scorer <" << primName    << 
1030        << "> does not support direct histogra << 
1031     cmd->CommandFailed(ed);                   << 
1032     return;                                   << 
1033   }                                           << 
1034                                                  540 
1035   pp->Plot(copyNo, histID);                   << 541 void G4ScoringMessenger::MeshBinCommand(G4VScoringMesh* mesh,G4TokenVec& token){
                                                   >> 542     G4int Ni = StoI(token[0]);
                                                   >> 543     G4int Nj = StoI(token[1]);
                                                   >> 544     G4int Nk = StoI(token[2]);
                                                   >> 545     G4int nSegment[3];
                                                   >> 546 
                                                   >> 547     if(dynamic_cast<G4ScoringBox*>(mesh)) {
                                                   >> 548       G4cout << ".... G4ScoringMessenger::MeshBinCommand - G4ScoringBox" << G4endl;
                                                   >> 549       nSegment[0] = Ni;
                                                   >> 550       nSegment[1] = Nj;
                                                   >> 551       nSegment[2] = Nk;
                                                   >> 552     } else if(dynamic_cast<G4ScoringCylinder*>(mesh)) {
                                                   >> 553       G4cout << ".... G4ScoringMessenger::MeshBinCommand - G4ScoringCylinder" << G4endl;
                                                   >> 554       nSegment[0] = Nj;
                                                   >> 555       nSegment[1] = Nk;
                                                   >> 556       nSegment[2] = Ni;
                                                   >> 557     } else {
                                                   >> 558       G4Exception("G4ScoringMessenger::MeshBinCommand()", "001", FatalException, "invalid mesh type");
                                                   >> 559       return;
                                                   >> 560     }
                                                   >> 561     //
                                                   >> 562     mesh->SetNumberOfSegments(nSegment);
1036 }                                                563 }
                                                   >> 564 
                                                   >> 565  
1037                                                  566