Project

General

Profile

Extensible PhysicsList Factory Tests

To test the ease of transitioning to the the g4alt::G4PhysListFactory code we start with test46 as an example. This program looks at $PHYSLIST and attempts to build the requested physics list.

Changes to test46.cc

The real changes to the code as essentially confined to test46.cc (though some trivial changes were made to the physics lists defined in this test package so that their constructor signature matched that required by the new factory -- see actual changes at bottom of the page).

--- test46.cc    2015-11-04 14:00:22.443004000 -0600
+++ ../../geant4/tests/test46/test46.cc    2015-11-03 16:08:03.253695000 -0600
@@ -48,11 +48,7 @@
 #include "Randomize.hh" 

 #include "DetectorConstruction.hh" 
-#ifndef ALT
-  #include "G4PhysListFactory.hh" 
-#else
-  #include "G4PhysListFactoryAlt.hh" 
-#endif
+#include "G4PhysListFactory.hh" 
 #include "G4VModularPhysicsList.hh" 
 #include "PrimaryGeneratorAction.hh" 

@@ -65,22 +61,6 @@
 #include "QGSPCMS_FTFP_BERT_EML.hh" 
 #include "QGSPCMS_FTFP_BERT_EML95msc93.hh" 
 #include "QGSPCMS_FTFP_BERT_EML_New.hh" 
-#ifdef ALT
-  #include "G4PhysListStamper.hh" 
-  G4_DECLARE_PHYSLIST_FACTORY(QGSPCMS_FTFP_BERT_EML);
-  G4_DECLARE_PHYSLIST_FACTORY(QGSPCMS_FTFP_BERT_EML95msc93);
-  G4_DECLARE_PHYSLIST_FACTORY(QGSPCMS_FTFP_BERT_EML_New);
-  // for some reason the old code mapped strings without the "CMS" 
-  // to the actual class name with; here, to support that continued mismatch
-  // we'll just register a them as a synonym via typedef
-  // then one can use either set of names
-  typedef QGSPCMS_FTFP_BERT_EML         QGSP_FTFP_BERT_EML;
-  typedef QGSPCMS_FTFP_BERT_EML95msc93  QGSP_FTFP_BERT_EML95msc93;
-  typedef QGSPCMS_FTFP_BERT_EML_New     QGSP_FTFP_BERT_EML_New;
-  G4_DECLARE_PHYSLIST_FACTORY(QGSP_FTFP_BERT_EML);
-  G4_DECLARE_PHYSLIST_FACTORY(QGSP_FTFP_BERT_EML95msc93);
-  G4_DECLARE_PHYSLIST_FACTORY(QGSP_FTFP_BERT_EML_New);
-#endif

 #include "G4VisExecutive.hh" 
 #include "G4UIExecutive.hh" 
@@ -105,31 +85,20 @@
   // or the default test46 name is used
   G4VModularPhysicsList* phys = 0;
   G4String physName = "";
-#ifndef ALT
   char* path = getenv("PHYSLIST");
   if(path) { physName = G4String(path); }
   if("QGSP_FTFP_BERT_EML" == physName) { phys = new QGSPCMS_FTFP_BERT_EML(); }
   else if("QGSP_FTFP_BERT_EML95msc93" == physName) {
     phys = new QGSPCMS_FTFP_BERT_EML95msc93(); }
   else if("QGSP_FTFP_BERT_EML_New" == physName) {
     phys = new QGSPCMS_FTFP_BERT_EML_New(); }
   else if("" == physName) { physName = "FTFP_BERT_EMV"; }

   if(!phys) {
     G4PhysListFactory factory;
     phys = factory.GetReferencePhysList(physName);
     if(!phys) { exit(1); }
   }
-#else
-  g4alt::G4PhysListFactory factory;
-  // this is our prefered list for this test if otherwise not specified
-  factory.SetDefaultReferencePhysList("FTFP_BERT_EMV");   
-  phys = factory.ReferencePhysList();  // uses $PHYSLIST
-  if (!phys) { 
-    factory.PrintAvailablePhysLists();
-    exit(1); 
-  }
-#endif

   runManager->SetUserInitialization(phys);

Changes to CMakeLists.txt

--- CMakeLists.txt    2015-11-04 13:26:01.582006000 -0600
+++ ../../geant4/tests/test46/CMakeLists.txt    2015-11-03 16:08:03.244695000 -0600
@@ -3,15 +3,6 @@
 find_package(Geant4 REQUIRED)
 include(${Geant4_USE_FILE})

-option(WITH_ALT "Use alternative physlist factory" OFF)
-if (WITH_ALT)
-  MESSAGE("setting -DALT")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DALT") 
-else()
-  MESSAGE("NOT setting -DALT")
-endif()
-
-
 if(GEANT4_ENABLE_TESTING)
   GEANT4_EXECUTABLE(test46 test46.cc src/*.cc)

Script to build & run tests

#! /usr/bin/env bash

echo $0

buildold=1
buildnew=1

if [ $buildold -ne 0 ]; then
  echo CCFORCE=${CCFORCE} -DWITH_ALT=OFF
  ${CCFORCE} cmake -DWITH_ALT=OFF .
  make -f Makefile
  mv test46 test46_oldfactory
  make -f Makefile clean
fi

if [ $buildnew -ne 0 ]; then
  echo CCFORCE=${CCFORCE} -DWITH_ALT=ON
  ${CCFORCE} cmake -DWITH_ALT=ON .
  ${CCFORCE} make -f Makefile
  mv test46 test46_newfactory
  make -f Makefile clean
fi

for PHYSLISTIN in QGSPCMS_FTFP_BERT_EML \
                  QGSPCMS_FTFP_BERT_EML95msc93 \
                  QGSPCMS_FTFP_BERT_EML_New \
                  NOTSET
do
  export PHYSLIST=${PHYSLISTIN}
  if [ "$PHYSLISTIN" == "NOTSET" ]; then unset PHYSLIST; fi

  # run new with real class name
  echo                            test46.newfactory.${PHYSLISTIN}
  ./test46_newfactory test46.in > test46.newfactory.${PHYSLISTIN} 2>&1

  # run old with real class name
  # these should all fail unless NOTSET
  echo                            test46.oldfactory.${PHYSLISTIN}
  ./test46_oldfactory test46.in > test46.oldfactory.${PHYSLISTIN} 2>&1

  if [ "$PHYSLISTIN" == "NOTSET" ]; then
     diff -u test46.oldfactory.${PHYSLISTIN} test46.newfactory.${PHYSLISTIN} > test46.${PHYSLISTIN}.diff
     continue
  fi

  # remove the CMS string
  export PHYSLIST=`echo $PHYSLISTIN | sed -e 's/CMS//' `

  # run new with old allowed string name
  echo                            test46.newfactory.${PHYSLIST}
  ./test46_newfactory test46.in > test46.newfactory.${PHYSLIST} 2>&1

  # run old with old allowed string name
  echo                            test46.oldfactory.${PHYSLIST}
  ./test46_oldfactory test46.in > test46.oldfactory.${PHYSLIST} 2>&2

  # these should be the same
  diff -u test46.newfactory.${PHYSLISTIN} test46.newfactory.${PHYSLIST} > test46.${PHYSLISTIN}.noCMS.diff

  # as should these
  diff -u test46.oldfactory.${PHYSLIST} test46.newfactory.${PHYSLIST} > test46.${PHYSLIST}.oldnew.diff

done

# end-of-script

Output difference when $PHYSLIST is unset

--- test46.oldfactory.NOTSET    2015-11-04 14:16:38.683129000 -0600
+++ test46.newfactory.NOTSET    2015-11-04 14:16:10.175394000 -0600
@@ -7,9 +7,12 @@
 *************************************************************

 ### NIST DataBase for Materials is used
-G4PhysListFactory::GetReferencePhysList <FTFP_BERT_EMV>  EMoption= 1
+### G4PhysListRegistry WARNING:  environment variable PHYSLIST is not defined
+    Default Physics Lists FTFP_BERT_EMV is instantiated
+G4PhysListRegistry::GetModularPhysicsList <FTFP_BERT_EMV>, as "FTFP_BERT" with extensions "_EMV" 
 <<< Geant4 Physics List simulation engine: FTFP_BERT 2.0

+<<< ReplacePhysics  with G4EmStandardPhysics_option1 "EMV" 
 <<< Reference Physics List FTFP_BERT_EMV is built

 /run/verbose 1
@@ -795,7 +798,7 @@
  Run terminated.
 Run Summary
   Number of events processed : 100
-  User=26.75s Real=26.91s Sys=0.05s
+  User=27.88s Real=28.1s Sys=0.06s
 RunAction: End of run actions are started
 HistoManager: End of run actions are started
 ========================================================
@@ -837,4 +840,4 @@
 Dynamic pools deleted: 12 / Total memory freed: 0.51 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=28.12s Real=28.33s Sys=0.06s
+User=29.19s Real=29.51s Sys=0.1s

Output differences for QGSP_FTFP_BERT_EML_New

Using the old code vs. the new factory, old CMS-less string name

--- test46.oldfactory.QGSP_FTFP_BERT_EML_New    2015-11-04 14:15:40.471627000 -0600
+++ test46.newfactory.QGSP_FTFP_BERT_EML_New    2015-11-04 14:15:10.096843000 -0600
@@ -7,7 +7,10 @@
 *************************************************************

 ### NIST DataBase for Materials is used
+G4PhysListRegistry::GetModularPhysicsList <QGSP_FTFP_BERT_EML_New>, as "QGSP_FTFP_BERT_EML_New" with extensions "" 
 You are using QGSP_FTFP_BERT_EML_New 
+<<< Reference Physics List QGSP_FTFP_BERT_EML_New is built
+
 /run/verbose 1
 /tracking/verbose 0
 #
@@ -737,7 +740,7 @@
  Run terminated.
 Run Summary
   Number of events processed : 100
-  User=27.61s Real=27.83s Sys=0.07s
+  User=29.39s Real=29.66s Sys=0.06s
 RunAction: End of run actions are started
 HistoManager: End of run actions are started
 ========================================================
@@ -779,4 +782,4 @@
 Dynamic pools deleted: 12 / Total memory freed: 0.53 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=29.9s Real=30.19s Sys=0.1s
+User=31.52s Real=31.9s Sys=0.09s

Output differences using new factory with class name vs. old CMS-less string

--- test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93    2015-11-04 14:13:07.831691000 -0600
+++ test46.newfactory.QGSP_FTFP_BERT_EML95msc93    2015-11-04 14:13:37.655460000 -0600
@@ -7,9 +7,9 @@
 *************************************************************

 ### NIST DataBase for Materials is used
-G4PhysListRegistry::GetModularPhysicsList <QGSPCMS_FTFP_BERT_EML95msc93>, as "QGSPCMS_FTFP_BERT_EML95msc93" with extensions "" 
+G4PhysListRegistry::GetModularPhysicsList <QGSP_FTFP_BERT_EML95msc93>, as "QGSP_FTFP_BERT_EML95msc93" with extensions "" 
 You are using QGSP_FTFP_BERT_EML95msc93 
-<<< Reference Physics List QGSPCMS_FTFP_BERT_EML95msc93 is built
+<<< Reference Physics List QGSP_FTFP_BERT_EML95msc93 is built

 /run/verbose 1
 /tracking/verbose 0
@@ -740,7 +740,7 @@
  Run terminated.
 Run Summary
   Number of events processed : 100
-  User=26.77s Real=26.97s Sys=0.07s
+  User=26.99s Real=27.19s Sys=0.05s
 RunAction: End of run actions are started
 HistoManager: End of run actions are started
 ========================================================
@@ -782,4 +782,4 @@
 Dynamic pools deleted: 12 / Total memory freed: 0.53 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=28.96s Real=29.24s Sys=0.1s
+User=29.19s Real=29.46s Sys=0.08s

Proof that "diff" isn't hiding anything

--- test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93    2015-11-04 14:13:07.831691000 -0600
+++ test46.oldfactory.QGSP_FTFP_BERT_EML    2015-11-04 14:12:38.423933000 -0600
@@ -7,10 +7,7 @@
 *************************************************************

 ### NIST DataBase for Materials is used
-G4PhysListRegistry::GetModularPhysicsList <QGSPCMS_FTFP_BERT_EML95msc93>, as "QGSPCMS_FTFP_BERT_EML95msc93" with extensions "" 
-You are using QGSP_FTFP_BERT_EML95msc93 
-<<< Reference Physics List QGSPCMS_FTFP_BERT_EML95msc93 is built
-
+You are using QGSP_FTFP_BERT_EML 
 /run/verbose 1
 /tracking/verbose 0
 #
@@ -39,7 +36,7 @@
 phot:   for  gamma, applyCuts: 1     SubType= 12  BuildTable= 0
       LambdaPrime table from 200 keV to 10 TeV in 54 bins 
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-       PhotoElectric :  Emin=        0 eV    Emax=       10 TeV   AngularGenSauterGavrila
+       PhotoElectric :  Emin=        0 eV    Emax=       10 TeV   AngularGenSauterGavrila  FluoActive

 compt:   for  gamma, applyCuts: 1     SubType= 13  BuildTable= 1
       Lambda table from 100 eV  to 1 MeV, 7 bins per decade, spline: 1
@@ -56,7 +53,8 @@
 msc:   for e-    SubType= 10
       RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-          UrbanMsc93 :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+            UrbanMsc :  Emin=        0 eV    Emax=      100 MeV  Table with 42 bins Emin=    100 eV    Emax=    100 MeV
+        WentzelVIUni :  Emin=      100 MeV   Emax=       10 TeV  Table with 35 bins Emin=    100 MeV   Emax=     10 TeV

 eIoni:   for  e-    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -73,10 +71,17 @@
              eBremSB :  Emin=        0 eV    Emax=        1 GeV   DipBustGen
             eBremLPM :  Emin=        1 GeV   Emax=       10 TeV   DipBustGen

+CoulombScat:   for  e-, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from 100 MeV to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=      100 MeV   Emax=       10 TeV
+
 msc:   for e+    SubType= 10
       RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-          UrbanMsc93 :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+            UrbanMsc :  Emin=        0 eV    Emax=      100 MeV  Table with 42 bins Emin=    100 eV    Emax=    100 MeV
+        WentzelVIUni :  Emin=      100 MeV   Emax=       10 TeV  Table with 35 bins Emin=    100 MeV   Emax=     10 TeV

 eIoni:   for  e+    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -97,10 +102,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
             eplus2gg :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  e+, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from 100 MeV to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=      100 MeV   Emax=       10 TeV
+
 msc:   for proton    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  proton    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -123,6 +134,12 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
            hPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  proton, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Used Lambda table of anti_proton
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for GenericIon    SubType= 10
       RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
@@ -151,9 +168,9 @@
           BetheBloch :  Emin=   7.9452 MeV   Emax=       10 TeV

 msc:   for anti_proton    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  anti_proton    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -163,10 +180,29 @@
             ICRU73QO :  Emin=        0 eV    Emax=        2 MeV
           BetheBloch :  Emin=        2 MeV   Emax=       10 TeV

+hBrems:   for  anti_proton    SubType= 3
+      dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
+      Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+               hBrem :  Emin=        0 eV    Emax=       10 TeV
+
+hPairProd:   for  anti_proton    SubType= 4
+      dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
+      Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
+      Sampling table 13x1001; from 7.50618 GeV to 10 TeV 
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+           hPairProd :  Emin=        0 eV    Emax=       10 TeV
+
+CoulombScat:   for  anti_proton, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from threshold  to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for kaon+    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  kaon+    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -189,10 +225,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
            hPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  kaon+, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from threshold  to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for kaon-    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  kaon-    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -215,10 +257,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
            hPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  kaon-, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Used Lambda table of kaon+
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for mu+    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 muIoni:   for  mu+    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -242,10 +290,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
           muPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  mu+, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from threshold  to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for mu-    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 muIoni:   for  mu-    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -269,10 +323,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
           muPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  mu-, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Used Lambda table of mu+
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for pi+    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  pi+    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -295,10 +355,16 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
            hPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  pi+, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Lambda table from threshold  to 10 TeV, 7 bins per decade, spline: 1
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 msc:   for pi-    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
+      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV
+        WentzelVIUni :  Emin=        0 eV    Emax=       10 TeV  Table with 77 bins Emin=    100 eV    Emax=     10 TeV

 hIoni:   for  pi-    SubType= 2
       dE/dx and range tables from 100 eV  to 10 TeV in 77 bins
@@ -321,6 +387,12 @@
       ===== EM models for the G4Region  DefaultRegionForTheWorld ======
            hPairProd :  Emin=        0 eV    Emax=       10 TeV

+CoulombScat:   for  pi-, integral: 1 , applyCuts: 1     SubType= 1  BuildTable= 1
+      Used Lambda table of pi+
+      180 < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
+      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
+  eCoulombScattering :  Emin=        0 eV    Emax=       10 TeV
+
 ====================================================================
                   HADRONIC PROCESSES SUMMARY (verbose level 1)

@@ -740,38 +812,38 @@
  Run terminated.
 Run Summary
   Number of events processed : 100
-  User=26.77s Real=26.97s Sys=0.07s
+  User=27.62s Real=27.84s Sys=0.06s
 RunAction: End of run actions are started
 HistoManager: End of run actions are started
 ========================================================
 Beam particle                           pi-
 Beam Energy(MeV)                        15000
 Number of events                        100
-Average number of MIPS (Edep < 0.8 GeV) 0.38
-Average number of steps                 1.689e+04
-Average number of neutron steps         6609
-Average number of hadron steps          2459
-Average number of gamma steps           1e+04
-Average number of e+- steps             2643
+Average number of MIPS (Edep < 0.8 GeV) 0.44
+Average number of steps                 1.744e+04
+Average number of neutron steps         6994
+Average number of hadron steps          2600
+Average number of gamma steps           1.002e+04
+Average number of e+- steps             2718
 ==============  ECAL  ====================================
-  1x1 (GeV) =      1.962 +-     0.2249    RMS= 2.249
-  3x3 (GeV) =      3.087 +-     0.3311    RMS= 3.311
-  5x5 (GeV) =      3.465 +-     0.3641    RMS= 3.641
-  E1/E9     =     0.7441 +-    0.02003    RMS= 0.2003
-  E1/E25    =     0.6927 +-    0.02288    RMS= 0.2288
-  E9/E25    =     0.9146 +-   0.007471    RMS= 0.07471
+  1x1 (GeV) =      1.907 +-     0.2125    RMS= 2.125
+  3x3 (GeV) =      3.054 +-     0.3187    RMS= 3.187
+  5x5 (GeV) =      3.427 +-     0.3538    RMS= 3.538
+  E1/E9     =     0.7473 +-    0.02054    RMS= 0.2054
+  E1/E25    =     0.6983 +-    0.02304    RMS= 0.2304
+  E9/E25    =     0.9197 +-   0.006875    RMS= 0.06875
 ==============  HCAL  ====================================
-Visible HCAL Edep(GeV)     =   0.07511
-Visible HCAL e-Edep(GeV)   =   0.03552
-Total HCAL Edep(GeV)       =   7.681 +- 0.1702
+Visible HCAL Edep(GeV)     =   0.08146
+Visible HCAL e-Edep(GeV)   =   0.03707
+Total HCAL Edep(GeV)       =   7.834 +- 0.1305
 ==========================================================
-Erec(GeV)   =      11.08 +-     0.2606    RMS= 2.606
-Etot(GeV)   =      11.19 +-     0.1702    RMS= 1.702
+Erec(GeV)   =      11.68 +-     0.2904    RMS= 2.904
+Etot(GeV)   =       11.3 +-     0.1305    RMS= 1.305
 ==========================================================
-Ecal/E0=   0.2288  RMS/E0(%)= 24.05
-Hcal/E0=       0.5074 +- 0.01124
-Erec/E0=       0.7318 +- 0.01721
-Etot/E0=       0.7388 +- 0.01124
+Ecal/E0=   0.2264  RMS/E0(%)= 23.37
+Hcal/E0=       0.5174 +- 0.008622
+Erec/E0=       0.7712 +- 0.01918
+Etot/E0=       0.7467 +- 0.008622
 ==========================================================

 ... write Root file : test46.root - done
@@ -779,7 +851,7 @@
 G4 kernel has come to Quit state.
 ================== Deleting memory pools ===================
 Number of memory pools allocated: 12; of which, static: 0
-Dynamic pools deleted: 12 / Total memory freed: 0.53 MB
+Dynamic pools deleted: 12 / Total memory freed: 0.5 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=28.96s Real=29.24s Sys=0.1s
+User=29.02s Real=29.33s Sys=0.09s

xyzzy



Minor Changes

To fit the new paradigm, a physics list must have a constructor method that takes a single G4int as a "verbosity" argument. To support this I made trivial changes reflected in tag test46-V10-01-01 as follows:

Index: include/QGSPCMS_FTFP_BERT_EML95msc93.hh
===================================================================
--- include/QGSPCMS_FTFP_BERT_EML95msc93.hh    (revision 93868)
+++ include/QGSPCMS_FTFP_BERT_EML95msc93.hh    (working copy)
@@ -33,7 +33,7 @@

 public:

-  QGSPCMS_FTFP_BERT_EML95msc93();
+  QGSPCMS_FTFP_BERT_EML95msc93(G4int ver=1);
   virtual ~QGSPCMS_FTFP_BERT_EML95msc93();

   virtual void SetCuts();
Index: include/QGSPCMS_FTFP_BERT_EML.hh
===================================================================
--- include/QGSPCMS_FTFP_BERT_EML.hh    (revision 93868)
+++ include/QGSPCMS_FTFP_BERT_EML.hh    (working copy)
@@ -33,7 +33,7 @@

 public:

-  QGSPCMS_FTFP_BERT_EML();
+  QGSPCMS_FTFP_BERT_EML(G4int ver=1);
   virtual ~QGSPCMS_FTFP_BERT_EML();

   virtual void SetCuts();
Index: include/QGSPCMS_FTFP_BERT_EML_New.hh
===================================================================
--- include/QGSPCMS_FTFP_BERT_EML_New.hh    (revision 93868)
+++ include/QGSPCMS_FTFP_BERT_EML_New.hh    (working copy)
@@ -33,7 +33,7 @@

 public:

-  QGSPCMS_FTFP_BERT_EML_New();
+  QGSPCMS_FTFP_BERT_EML_New(G4int ver=1);
   virtual ~QGSPCMS_FTFP_BERT_EML_New();

   virtual void SetCuts();
Index: src/QGSPCMS_FTFP_BERT_EML95msc93.cc
===================================================================
--- src/QGSPCMS_FTFP_BERT_EML95msc93.cc    (revision 93868)
+++ src/QGSPCMS_FTFP_BERT_EML95msc93.cc    (working copy)
@@ -37,9 +37,8 @@
 #include "G4DataQuestionaire.hh" 
 #include "G4HadronPhysicsQGSP_FTFP_BERT.hh" 

-QGSPCMS_FTFP_BERT_EML95msc93::QGSPCMS_FTFP_BERT_EML95msc93()
+QGSPCMS_FTFP_BERT_EML95msc93::QGSPCMS_FTFP_BERT_EML95msc93(G4int ver)
 {
-  int ver = 1;

   G4DataQuestionaire it(photon);
   defaultCutValue = 0.7*mm;  
Index: src/QGSPCMS_FTFP_BERT_EML.cc
===================================================================
--- src/QGSPCMS_FTFP_BERT_EML.cc    (revision 93868)
+++ src/QGSPCMS_FTFP_BERT_EML.cc    (working copy)
@@ -38,9 +38,8 @@
 #include "G4DataQuestionaire.hh" 
 #include "G4HadronPhysicsQGSP_FTFP_BERT.hh" 

-QGSPCMS_FTFP_BERT_EML::QGSPCMS_FTFP_BERT_EML()
+QGSPCMS_FTFP_BERT_EML::QGSPCMS_FTFP_BERT_EML(G4int ver)
 {
-  int ver = 1;

   G4DataQuestionaire it(photon);
   defaultCutValue = 0.7*mm;  
Index: src/QGSPCMS_FTFP_BERT_EML_New.cc
===================================================================
--- src/QGSPCMS_FTFP_BERT_EML_New.cc    (revision 93868)
+++ src/QGSPCMS_FTFP_BERT_EML_New.cc    (working copy)
@@ -37,9 +37,8 @@
 #include "G4DataQuestionaire.hh" 
 #include "G4HadronPhysicsQGSP_FTFP_BERT.hh" 

-QGSPCMS_FTFP_BERT_EML_New::QGSPCMS_FTFP_BERT_EML_New()
+QGSPCMS_FTFP_BERT_EML_New::QGSPCMS_FTFP_BERT_EML_New(G4int ver)
 {
-  int ver = 1;

   G4DataQuestionaire it(photon);
   defaultCutValue = 0.7*mm;  
Index: History
===================================================================
--- History    (revision 93868)
+++ History    (working copy)
@@ -14,6 +14,10 @@
      ----------------------------------------------------------
      * Reverse chronological order (last date on top), please *
      ----------------------------------------------------------
+04-11-15  R.Hatcher    (test46-V10-01-01)
+- Give physics lists defined in this test an optional int arg
+    that is the verbosity (used to be a local variable hard-coded = 1);
+    this brings them in line with other physlist constructors

 31-08-15  V.Ivanchenko (test46-V10-01-00)
 - Added TrackingAction and added ntuples with transfer