Project

General

Profile

Changes to test46

This test makes use of the extensibility of the new g4alt::G4PhysListFactory code. This program looks at $PHYSLIST and attempts to build the requested physics list, sometimes that variable is not one of the official Geant4 reference lists.

Changes to test46.cc itself

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

$ diff --unified=10 -w test46.cc ../../source/geant4/tests/test46/
--- test46.cc    2016-01-31 23:29:43.713055000 -0600
+++ ../../source/geant4/tests/test46/test46.cc    2016-01-31 17:52:59.763592000 -0600
@@ -41,57 +41,34 @@
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

 #include "G4RunManager.hh" 
 #include "G4UImanager.hh" 
 #include "G4UIterminal.hh" 
 #include "G4UItcsh.hh" 
 #include "Randomize.hh" 

 #include "DetectorConstruction.hh" 
-#ifndef ALT
   #include "G4PhysListFactory.hh" 
-#else
-  #include "G4PhysListFactoryAlt.hh" 
-  using namespace g4alt;
-#endif
 #include "G4VModularPhysicsList.hh" 
 #include "PrimaryGeneratorAction.hh" 

 #include "RunAction.hh" 
 #include "EventAction.hh" 
 #include "StackingAction.hh" 
 #include "TrackingAction.hh" 
 #include "G4Timer.hh" 

 #include "QGSPCMS_FTFP_BERT_EML.hh" 
 #include "QGSPCMS_FTFP_BERT_EML95msc93.hh" 
 #include "QGSPCMS_FTFP_BERT_EML_New.hh" 

-#ifdef ALT
-  // register the new physics lists with the factory
-  #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" 

 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

 int main(int argc,char** argv) {

   G4Timer timer;
   timer.Start();

@@ -101,48 +78,34 @@
   //Construct the default run manager
   G4RunManager * runManager = new G4RunManager();

   //set mandatory initialization classes
   runManager->SetUserInitialization(new DetectorConstruction());

   // Physics List name defined via environment variable
   // 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
-  // simplify the above code with just a few lines ..
-  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) { 
-    // before if there was no match we just exited; now let the user
-    // know their available options
-    factory.PrintAvailablePhysLists();
-    exit(1); 
-  }
-#endif

   runManager->SetUserInitialization(phys);

   runManager->SetUserAction(new PrimaryGeneratorAction());

   //set user action classes
   runManager->SetUserAction(new RunAction());
   runManager->SetUserAction(new EventAction());
   runManager->SetUserAction(new StackingAction());
   runManager->SetUserAction(new TrackingAction());

Changes to CMakeLists.txt

$ diff -u -w CMakeLists.txt ../../source/geant4/tests/test46/
--- CMakeLists.txt    2016-01-31 23:24:35.426027000 -0600
+++ ../../source/geant4/tests/test46/CMakeLists.txt    2016-01-31 17:52:59.755592000 -0600
@@ -3,14 +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

$ diff -u -w test46.oldfactory.NOTSET  test46.newfactory.NOTSET 
--- test46.oldfactory.NOTSET    2016-01-31 23:37:22.206960000 -0600
+++ test46.newfactory.NOTSET    2016-01-31 23:36:54.269238000 -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.2s Real=26.35s Sys=0.05s
+  User=24.37s Real=24.52s Sys=0.05s
 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.54 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=27.54s Real=27.76s Sys=0.07s
+User=25.67s Real=25.89s Sys=0.06s

Output differences for QGSP_FTFP_BERT_EML_New

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

$ diff -u -w test46.oldfactory.QGSP_FTFP_BERT_EML_New test46.newfactory.QGSP_FTFP_BERT_EML_New
--- test46.oldfactory.QGSP_FTFP_BERT_EML_New    2016-01-31 23:36:28.172564000 -0600
+++ test46.newfactory.QGSP_FTFP_BERT_EML_New    2016-01-31 23:36:00.360847000 -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=25.26s Real=25.37s Sys=0.05s
+  User=24.59s Real=24.72s 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.5 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=27.43s Real=27.62s Sys=0.08s
+User=26.69s Real=26.91s Sys=0.08s

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

$ diff -u -w test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93 test46.newfactory.QGSP_FTFP_BERT_EML95msc93
--- test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93    2016-01-31 23:34:09.399966000 -0600
+++ test46.newfactory.QGSP_FTFP_BERT_EML95msc93    2016-01-31 23:34:37.450695000 -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=27.62s Real=27.78s Sys=0.06s
+  User=25.11s Real=25.25s 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.5 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=29.78s Real=30.03s Sys=0.09s
+User=27.43s Real=27.65s Sys=0.08s

Proof that "diff" isn't hiding anything

$ diff -u -w test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93 test46.oldfactory.QGSP_FTFP_BERT_EML
--- test46.newfactory.QGSPCMS_FTFP_BERT_EML95msc93    2016-01-31 23:34:09.399966000 -0600
+++ test46.oldfactory.QGSP_FTFP_BERT_EML    2016-01-31 23:33:39.170180000 -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=27.62s Real=27.78s Sys=0.06s
+  User=23.35s Real=23.5s Sys=0.05s
 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.4
-Average number of steps                 1.763e+04
-Average number of neutron steps         7202
-Average number of hadron steps          2459
-Average number of gamma steps           1.038e+04
-Average number of e+- steps             2525
+Average number of MIPS (Edep < 0.8 GeV) 0.45
+Average number of steps                 1.845e+04
+Average number of neutron steps         7582
+Average number of hadron steps          2562
+Average number of gamma steps           1.078e+04
+Average number of e+- steps             2566
 ==============  ECAL  ====================================
-  1x1 (GeV) =      1.953 +-     0.2254    RMS= 2.254
-  3x3 (GeV) =      3.029 +-     0.3184    RMS= 3.184
-  5x5 (GeV) =      3.382 +-     0.3476    RMS= 3.476
-  E1/E9     =     0.7422 +-    0.02003    RMS= 0.2003
-  E1/E25    =     0.6894 +-    0.02234    RMS= 0.2234
-  E9/E25    =     0.9143 +-   0.007203    RMS= 0.07203
+  1x1 (GeV) =      1.632 +-       0.19    RMS= 1.9
+  3x3 (GeV) =      2.479 +-     0.2762    RMS= 2.762
+  5x5 (GeV) =      2.757 +-     0.3019    RMS= 3.019
+  E1/E9     =     0.7861 +-    0.01929    RMS= 0.1929
+  E1/E25    =     0.7382 +-    0.02203    RMS= 0.2203
+  E9/E25    =     0.9262 +-   0.007192    RMS= 0.07192
 ==============  HCAL  ====================================
-Visible HCAL Edep(GeV)     =   0.07458
-Visible HCAL e-Edep(GeV)   =   0.03265
-Total HCAL Edep(GeV)       =   7.853 +- 0.1495
+Visible HCAL Edep(GeV)     =   0.08527
+Visible HCAL e-Edep(GeV)   =   0.03989
+Total HCAL Edep(GeV)       =   8.625 +- 0.1402
 ==========================================================
-Erec(GeV)   =      10.94 +-     0.3109    RMS= 3.109
-Etot(GeV)   =      11.28 +-     0.1495    RMS= 1.495
+Erec(GeV)   =      11.37 +-     0.2708    RMS= 2.708
+Etot(GeV)   =      11.43 +-     0.1402    RMS= 1.402
 ==========================================================
-Ecal/E0=   0.2234  RMS/E0(%)= 22.96
-Hcal/E0=       0.5187 +- 0.009877
-Erec/E0=       0.7227 +- 0.02053
-Etot/E0=       0.7449 +- 0.009877
+Ecal/E0=   0.1821  RMS/E0(%)= 19.94
+Hcal/E0=       0.5697 +- 0.009261
+Erec/E0=       0.7507 +- 0.01789
+Etot/E0=       0.7548 +- 0.009261
 ==========================================================

 ... 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.5 MB
+Dynamic pools deleted: 12 / Total memory freed: 0.52 MB
 ============================================================
 RunManagerKernel is deleted. Good bye :)
-User=29.78s Real=30.03s Sys=0.09s
+User=24.76s Real=25s Sys=0.08s

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