Import Geant4 3.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:03:00 +02:00
parent cfcb558cfe
commit 137e303ecc
2843 changed files with 37082 additions and 38426 deletions
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01.cc,v 1.6 2000/11/15 13:46:23 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// --------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01AnalysisManager.hh,v 1.3 2000/10/31 13:10:00 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorHit.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorimeterSD.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorConstruction.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorMessenger.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01EventAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PhysicsList.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorAction.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorMessenger.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01RunAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingVerbose.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
//---------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01VisManager.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01AnalysisManager.cc,v 1.9 2000/12/06 13:08:03 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// Guy Barrand 14th Septembre 2000.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorHit.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorimeterSD.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorConstruction.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorMessenger.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01EventAction.cc,v 1.3 2000/11/10 14:08:08 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PhysicsList.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorAction.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorMessenger.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01RunAction.cc,v 1.3 2000/11/10 14:08:09 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingAction.cc,v 1.3 2000/11/10 14:08:10 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingVerbose.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
//---------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01VisManager.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.4 2000/12/07 11:43:03 maire Exp $
# $Id: GNUmakefile,v 1.5 2001/02/21 14:00:33 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -16,4 +16,12 @@ all: lib bin
include $(G4INSTALL)/config/architecture.gmk
G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.7 2000/12/07 11:43:03 maire Exp $
$Id: History,v 1.11 2001/03/27 08:34:07 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,19 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
27-03-01 mma (testem1-V03-00-05)
- set cppflag G4NOHIST = true in gnumakefile
08-03-01 Hisaya (testem1-V03-00-04)
- adapted ProcessesCount to STL
21-02-01 mma (testem1-V03-00-03)
- hbook histograms restored
20-02-01 mma (testem1-V03-00-02)
- verbose stepping adapted for STL
- save rndm at begin of event
07-12-00 mma (testem1-V02-00-03 & testem-noHist)
remove hbook histograms: GNUmakefile,runAction,trackingAction,
steppingAction
@@ -1,4 +1,4 @@
$Id: README,v 1.1 1999/10/11 13:07:24 maire Exp $
$Id: README,v 1.3 2001/03/30 12:41:27 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -90,13 +90,16 @@ $Id: README,v 1.1 1999/10/11 13:07:24 maire Exp $
7- HISTOGRAMS
Testem1 produces several histo which are saved as testem1.histo
Testem1 produces several histo which are saved as testem1.paw
Content of these histo:
1 : track length of a charged particle
2 : number of steps per track (charged particle)
3 : step length (charged particle)
Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile.
Currently, histograms in this example are implemented through the obsolete
CLHEP/Hist package, which is no longer supported. The implementation will
be replaced by direct call to the "analysis" module in a near future.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: TestEm1.cc,v 1.4 2000/12/06 13:21:48 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -1,10 +1,10 @@
**********************************************
Geant4 version $Name: geant4-03-00 $
(30-Jun-2000)
Geant4 version $Name: geant4-03-01 $
(15-Dec-2000)
Copyright : Geant4 Collaboration
**********************************************
***** Table : Nb of materials = 8 *****
***** Table : Nb of materials = 9 *****
Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m
---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 70.00 % Abundance 72.71 %
@@ -23,6 +23,9 @@
Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm
---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm
---> Element: Silicon Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm
---> Element: Iron Z = 26.0 N = 55.9 A = 55.85 g/mole fractionMass: 100.00 % Abundance 100.00 %
@@ -63,13 +66,14 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
material min.delta energy(keV)
Air 0.99
H2liquid 28.675
Water 81.507
liquidArgon 78.362
Aluminium 125.06
Iron 224.07
Lead 229.55
Uranium 296.06
H2liquid 28.089
Water 81.851
liquidArgon 79.954
Aluminium 125.02
Silicon 116.88
Iron 225.11
Lead 228.53
Uranium 294.24
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -91,13 +95,14 @@ msc: Tables of transport mean free paths.
material min.delta energy(keV)
Air 0.99
H2liquid 28.675
Water 81.507
liquidArgon 78.362
Aluminium 125.06
Iron 224.07
Lead 229.55
Uranium 296.06
H2liquid 28.089
Water 81.851
liquidArgon 79.954
Aluminium 125.02
Silicon 116.88
Iron 225.11
Lead 228.53
Uranium 294.24
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -130,11 +135,12 @@ Cut in energy
Water 2.9 keV 347 keV
liquidArgon 6.18 keV 343 keV
Aluminium 6.89 keV 597 keV
Silicon 6.89 keV 541 keV
Iron 20.8 keV 1.28 MeV
Lead 101 keV 1.38 MeV
Uranium 110 keV 1.92 MeV
===================================================
# $Id: TestEm1.out,v 1.7 2000/11/24 10:36:58 stesting Exp $
# $Id: TestEm1.out,v 1.11 2001/03/30 09:02:57 stesting Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -176,11 +182,12 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
Air 0.99
H2liquid 0.99
Water 3.2733
liquidArgon 3.7293
Aluminium 6.3003
Iron 10.422
Lead 8.9769
Uranium 11.54
liquidArgon 3.9154
Aluminium 6.2979
Silicon 5.8817
Iron 10.524
Lead 9.1135
Uranium 11.689
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -204,11 +211,12 @@ msc: Tables of transport mean free paths.
Air 0.99
H2liquid 0.99
Water 3.2733
liquidArgon 3.7293
Aluminium 6.3003
Iron 10.422
Lead 8.9769
Uranium 11.54
liquidArgon 3.9154
Aluminium 6.2979
Silicon 5.8817
Iron 10.524
Lead 9.1135
Uranium 11.689
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -241,6 +249,7 @@ Cut in energy
Water 4.06 keV 3.27 keV
liquidArgon 9.08 keV 3.98 keV
Aluminium 9.99 keV 9.97 keV
Silicon 10 keV 8.45 keV
Iron 31.1 keV 43.3 keV
Lead 124 keV 42.8 keV
Uranium 143 keV 53.4 keV
@@ -265,18 +274,18 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100
User=70.06s Real=75.54s Sys=4.95s
User=91.99s Real=97.75s Sys=5.73s
nb tracks/event neutral: 28.42 charged: 650.00
nb steps/event neutral: 151.89 charged: 1278.63
nb tracks/event neutral: 27.57 charged: 666.07
nb steps/event neutral: 144.93 charged: 2194.99
nb of process calls per event:
eIoni eBrem phot compt conv annihil
1251.55 25.69 27.03 123.47 1.39 1.39
eIoni eBrem conv annihil compt phot
2168.94 24.47 1.58 1.58 117.36 25.99
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1391858697, 202982242
Current couple of seeds = 1463312763, 65501812
----------------------------------------
G4 kernel has come to Quit state.
Deletion of G4 kernel class start.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1DetectorConstruction.hh,v 1.2 1999/12/15 14:48:52 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1DetectorMessenger.hh,v 1.2 1999/12/15 14:48:53 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1EventAction.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1EventActionMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsList.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsListMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1RunAction.hh,v 1.4 2000/12/07 11:43:04 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1RunAction.hh,v 1.5 2001/02/21 14:00:34 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -25,6 +25,11 @@
class G4Run;
class Em1RunActionMessenger;
#ifndef G4NOHIST
class HepTupleManager;
class HepHistogram;
#endif
class Em1RunAction : public G4UserRunAction
{
public:
@@ -44,7 +49,11 @@ class Em1RunAction : public G4UserRunAction
public:
void SetRndmFreq(G4int val) {saveRndm = val;}
G4int GetRndmFreq() {return saveRndm;}
#ifndef G4NOHIST
HepHistogram* GetHisto(G4int id) {return histo[id];}
#endif
private:
void bookHisto();
void cleanHisto();
@@ -56,6 +65,11 @@ class Em1RunAction : public G4UserRunAction
Em1RunActionMessenger* runMessenger;
G4int saveRndm;
#ifndef G4NOHIST
HepTupleManager* hbookManager;
HepHistogram* histo[3];
#endif
};
#endif
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1RunActionMessenger.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1SteppingAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1SteppingVerbose.hh,v 1.4 2000/12/06 13:21:49 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1SteppingVerbose.hh,v 1.5 2001/02/19 14:04:26 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// This class manages the verbose outputs in G4SteppingManager.
// It inherits from G4SteppingVerbose.
@@ -15,8 +15,6 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
class Em1SteppingVerbose;
#ifndef Em1SteppingVerbose_h
#define Em1SteppingVerbose_h 1
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1TrackingAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1VisManager.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -1,4 +1,3 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
@@ -6,19 +5,13 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: ProcessesCount.hh,v 1.3 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: ProcessesCount.hh,v 1.5 2001/03/08 16:45:17 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// -----------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// ------------------- class ProcessesCount -----------------
//
// 26-10-98: first version, M.Maire
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// 08.03.01 Hisaya: adapted for STL
// 26.10.98 mma : first version
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -27,7 +20,7 @@
#define ProcessesCount_HH
#include "globals.hh"
#include "g4rw/tpordvec.h"
#include "g4std/vector"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -36,12 +29,6 @@ class OneProcessCount
public:
OneProcessCount(G4String name) {Name=name; Counter=0;};
~OneProcessCount() {};
G4int operator==(const OneProcessCount& right) const {return (this==&right);};
G4int operator!=(const OneProcessCount& right) const {return (this!=&right);};
private:
OneProcessCount(OneProcessCount& right) {*this= right;};
const OneProcessCount& operator=(const OneProcessCount& right) {return right;};
public:
G4String GetName() {return Name;};
@@ -56,6 +43,12 @@ private:
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
typedef G4RWTPtrOrderedVector<OneProcessCount> ProcessesCount;
typedef G4std::vector<OneProcessCount*> ProcessesCount;
#endif
@@ -7,7 +7,7 @@
// and all its terms.
//
// $Id: Em1DetectorConstruction.cc,v 1.4 2000/12/13 11:11:59 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1DetectorMessenger.cc,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1EventAction.cc,v 1.2 1999/12/15 14:48:56 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1EventAction.cc,v 1.3 2001/02/20 15:45:17 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -47,10 +47,21 @@ Em1EventAction::~Em1EventAction()
void Em1EventAction::BeginOfEventAction(const G4Event* evt)
{
G4int evtNb = evt->GetEventID();
//printing survey
if (evtNb%printModulo == 0)
G4cout << "\n---> Begin of Event: " << evtNb << G4endl;
TotalEnergyDeposit = 0.;}
//save rndm status
if (Em1Run->GetRndmFreq() == 2)
{
HepRandom::saveEngineStatus("beginOfEvent.rndm");
if (evtNb%printModulo == 0) HepRandom::showEngineStatus();
}
//additional initializations
TotalEnergyDeposit = 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -73,18 +84,6 @@ void Em1EventAction::EndOfEventAction(const G4Event* evt)
trj->DrawTrajectory(50);
}
}
//save rndm status
if (Em1Run->GetRndmFreq() == 2)
{
HepRandom::saveEngineStatus("endOfEvent.rndm");
G4int evtNb = evt->GetEventID();
if (evtNb%printModulo == 0)
{
G4cout << "\n---> End of Event: " << evtNb << G4endl;
HepRandom::showEngineStatus();
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1EventActionMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsList.cc,v 1.3 2000/03/05 03:31:39 kurasige Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsListMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,10 +5,12 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1RunAction.cc,v 1.6 2000/12/07 11:43:04 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
//
// $Id: Em1RunAction.cc,v 1.10 2001/03/27 08:34:08 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// 08.03.01 Hisaya: adapted for STL
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -24,12 +26,20 @@
#include "Randomize.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em1RunAction::Em1RunAction()
: ProcCounter(0), saveRndm (1),
runMessenger(new Em1RunActionMessenger(this))
{}
{
#ifndef G4NOHIST
hbookManager = NULL;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -42,12 +52,28 @@ Em1RunAction::~Em1RunAction()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void Em1RunAction::bookHisto()
{}
{
#ifndef G4NOHIST
hbookManager = new HBookFile("testem1.paw", 68);
// booking histograms
histo[0] = hbookManager->histogram("track length (mm) of a charged particle",100,0.,50*cm);
histo[1] = hbookManager->histogram("Nb of steps per track (charged particle)",100,0.,100.);
histo[2] = hbookManager->histogram("step length (mm) charged particle",100,0.,10*mm);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void Em1RunAction::cleanHisto()
{}
{
#ifndef G4NOHIST
// writing histogram file
hbookManager->write();
delete [] histo;
delete hbookManager;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -80,10 +106,10 @@ void Em1RunAction::BeginOfRunAction(const G4Run* aRun)
void Em1RunAction::CountProcesses(G4String procName)
{
//does the process already encounted ?
size_t nbProc = ProcCounter->entries();
size_t nbProc = ProcCounter->size();
size_t i = 0;
while ((i<nbProc)&&((*ProcCounter)[i]->GetName()!=procName)) i++;
if (i == nbProc) ProcCounter->insert( new OneProcessCount(procName));
if (i == nbProc) ProcCounter->push_back( new OneProcessCount(procName));
(*ProcCounter)[i]->Count();
}
@@ -110,11 +136,11 @@ void Em1RunAction::EndOfRunAction(const G4Run* aRun)
//frequency of processes call
G4cout << "\n nb of process calls per event: \n ";
for (G4int i=0; i< ProcCounter->entries();i++)
for (G4int i=0; i< ProcCounter->size();i++)
G4cout << G4std::setw(9) << (*ProcCounter)[i]->GetName();
G4cout << "\n ";
for (G4int j=0; j< ProcCounter->entries();j++)
for (G4int j=0; j< ProcCounter->size();j++)
G4cout << G4std::setw(9) << ((*ProcCounter)[j]->GetCounter())/dNbOfEvents;
G4cout << G4endl;
@@ -122,15 +148,20 @@ void Em1RunAction::EndOfRunAction(const G4Run* aRun)
G4cout.precision(oldprec);
}
ProcCounter->clearAndDestroy();
delete ProcCounter;
// delete and remove all contents in ProcCounter
while (ProcCounter->size()>0){
OneProcessCount* aProcCount=ProcCounter->back();
ProcCounter->pop_back();
delete aProcCount;
}
delete ProcCounter;
//draw the events
if (G4VVisManager::GetConcreteInstance())
G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update");
// save Rndm status
if (saveRndm == 1)
if (saveRndm > 0)
{ HepRandom::showEngineStatus();
HepRandom::saveEngineStatus("endOfRun.rndm");
}
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1RunActionMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1RunActionMessenger.cc,v 1.3 2001/02/20 15:45:17 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -35,8 +35,8 @@ Em1RunActionMessenger::Em1RunActionMessenger(Em1RunAction* run)
RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files.");
RndmSaveCmd->SetGuidance("freq = 0 not saved");
RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm");
RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm");
RndmSaveCmd->SetParameterName("frequency",false);
RndmSaveCmd->SetRange("frequency>=0 && frequency<=2");
RndmSaveCmd->AvailableForStates(PreInit,Idle);
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1SteppingAction.cc,v 1.4 2000/12/07 11:43:04 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1SteppingAction.cc,v 1.5 2001/02/21 14:00:35 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -19,6 +19,10 @@
#include "G4SteppingManager.hh"
#include "G4VProcess.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em1SteppingAction::Em1SteppingAction(Em1RunAction* RuAct, Em1EventAction* EvAct)
@@ -41,7 +45,11 @@ void Em1SteppingAction::UserSteppingAction(const G4Step* aStep)
if (process) runAction->CountProcesses(process->GetProcessName());
G4double charge = aStep->GetTrack()->GetDefinition()->GetPDGCharge();
G4double steplen = aStep->GetStepLength();
G4double steplen = aStep->GetStepLength();
#ifndef G4NOHIST
if (charge != 0.) runAction->GetHisto(2)->accumulate(steplen);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1SteppingVerbose.cc,v 1.4 2000/12/06 13:21:50 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1SteppingVerbose.cc,v 1.6 2001/02/19 14:05:15 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -46,7 +46,7 @@ void Em1SteppingVerbose::StepInfo()
<< G4std::setw( 9) << "dEStep" << " "
<< G4std::setw(10) << "StepLeng"
<< G4std::setw(10) << "TrakLeng"
<< G4std::setw(10) << "NextVolu"
<< G4std::setw(10) << "Volume" << " "
<< G4std::setw(10) << "Process" << G4endl;
}
@@ -61,16 +61,17 @@ void Em1SteppingVerbose::StepInfo()
// if( fStepStatus != fWorldBoundary){
if( fTrack->GetNextVolume() != 0 ) {
G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName();
G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << G4std::setw(10) << "OutOfWorld";
}
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){
G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
G4cout << " "
<< G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
} else {
G4cout << "User Limit";
G4cout << " UserLimit";
}
G4cout << G4endl;
@@ -86,12 +87,12 @@ void Em1SteppingVerbose::StepInfo()
<< ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).entries()
<< "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(G4int lp1=(*fSecondary).entries()-tN2ndariesTot;
lp1<(*fSecondary).entries(); lp1++){
for(G4int lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< G4std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
@@ -115,8 +116,8 @@ void Em1SteppingVerbose::StepInfo()
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
void Em1SteppingVerbose::TrackingStarted()
@@ -134,7 +135,7 @@ G4int prec = G4cout.precision(3);
<< G4std::setw( 9) << "dEStep" << " "
<< G4std::setw(10) << "StepLeng"
<< G4std::setw(10) << "TrakLeng"
<< G4std::setw(10) << "NextVolu"
<< G4std::setw(10) << "Volume" << " "
<< G4std::setw(10) << "Process" << G4endl;
G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
@@ -147,13 +148,13 @@ G4int prec = G4cout.precision(3);
<< G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if(fTrack->GetNextVolume()){
G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " ";
G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << G4std::setw(10) << "OutOfWorld" << " ";
G4cout << G4std::setw(10) << "OutOfWorld";
}
G4cout << G4std::setw(10) << "initStep" << G4endl;
G4cout << " initStep" << G4endl;
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -6,8 +6,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em1TrackingAction.cc,v 1.4 2000/12/07 11:43:04 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em1TrackingAction.cc,v 1.5 2001/02/21 14:00:35 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -18,6 +18,10 @@
#include "Em1RunAction.hh"
#include "G4Track.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -38,6 +42,10 @@ void Em1TrackingAction::PostUserTrackingAction(const G4Track* aTrack)
if (aTrack->GetDefinition()->GetPDGCharge() == 0.)
{runAction->CountTraks0(1); runAction->CountSteps0(nbSteps);}
else {runAction->CountTraks1(1); runAction->CountSteps1(nbSteps);
#ifndef G4NOHIST
runAction->GetHisto(0)->accumulate(Trleng);
runAction->GetHisto(1)->accumulate((float)nbSteps);
#endif
}
}
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1VisManager.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.4 2000/12/07 12:14:06 maire Exp $
# $Id: GNUmakefile,v 1.5 2001/02/21 12:15:45 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -16,4 +16,12 @@ all: lib bin
include $(G4INSTALL)/config/architecture.gmk
G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.7 2000/12/07 12:14:06 maire Exp $
$Id: History,v 1.11 2001/03/27 08:58:14 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,19 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
27-03-01 mma (testem2-V03-00-05)
- set cppflag G4NOHIST = true in gnumakefile
08-03-01 Hisaya (testem2-V03-00-04)
- RunAction adapted for STL
21-02-01 mma (testem2-V03-00-03)
- hbook histograms restored
20-02-01 mma (testem2-V03-00-02)
- verbose stepping adapted for STL
- save rndm at begin of event
07-12-00 mma (testem2-V02-00-03 & testem-noHist)
remove hbook histograms: GNUmakefile,runAction
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2000/01/21 10:56:13 maire Exp $
$Id: README,v 1.4 2001/03/30 12:40:42 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -87,7 +87,7 @@ $Id: README,v 1.2 2000/01/21 10:56:13 maire Exp $
7- HISTOGRAMS
TestEm2 produces several histo which are saved as testem2.histo
TestEm2 produces several histo which are saved as testem2.paw
Content of these histo:
@@ -106,4 +106,9 @@ $Id: README,v 1.2 2000/01/21 10:56:13 maire Exp $
10 : radial energy profile
11 : cumulated radial energy profile
12 : rms of cumulated radial energy profile
Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile.
Currently, histograms in this example are implemented through the obsolete
CLHEP/Hist package, which is no longer supported. The implementation will
be replaced by direct call to the "analysis" module in a near future.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: TestEm2.cc,v 1.4 2000/12/06 14:12:15 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -1,6 +1,6 @@
**********************************************
Geant4 version $Name: geant4-03-00 $
(30-Jun-2000)
Geant4 version $Name: geant4-03-01 $
(15-Dec-2000)
Copyright : Geant4 Collaboration
**********************************************
@@ -69,14 +69,14 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
material min.delta energy(keV)
Air 0.99
Water 81.507
lAr 78.362
Al 125.06
Fe 224.07
BGO 186.87
PbWO4 200.84
Tungsten 337.27
Lead 229.55
Water 81.851
lAr 79.954
Al 125.02
Fe 225.11
BGO 187.26
PbWO4 201.19
Tungsten 336.44
Lead 228.53
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -98,14 +98,14 @@ msc: Tables of transport mean free paths.
material min.delta energy(keV)
Air 0.99
Water 81.507
lAr 78.362
Al 125.06
Fe 224.07
BGO 186.87
PbWO4 200.84
Tungsten 337.27
Lead 229.55
Water 81.851
lAr 79.954
Al 125.02
Fe 225.11
BGO 187.26
PbWO4 201.19
Tungsten 336.44
Lead 228.53
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -143,7 +143,7 @@ Cut in energy
Tungsten 105 keV 2.31 MeV
Lead 101 keV 1.38 MeV
===================================================
# $Id: TestEm2.out,v 1.9 2000/11/24 10:50:41 stesting Exp $
# $Id: TestEm2.out,v 1.13 2001/03/30 09:03:08 stesting Exp $
#
# Macro file for "TestEm2.cc"
# (can be run in batch, without graphic)
@@ -190,14 +190,14 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
material min.delta energy(keV)
Air 3.2397
Water 215.03
lAr 209.58
Al 349.52
Fe 697.65
BGO 571.17
PbWO4 625.41
Tungsten 1205.1
Lead 750.46
Water 215.85
lAr 213.4
Al 349.38
Fe 698.96
BGO 569.64
PbWO4 622.56
Tungsten 1181.6
Lead 737.09
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -219,14 +219,14 @@ msc: Tables of transport mean free paths.
material min.delta energy(keV)
Air 3.2397
Water 215.03
lAr 209.58
Al 349.52
Fe 697.65
BGO 571.17
PbWO4 625.41
Tungsten 1205.1
Lead 750.46
Water 215.85
lAr 213.4
Al 349.38
Fe 698.96
BGO 569.64
PbWO4 622.56
Tungsten 1181.6
Lead 737.09
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -293,20 +293,20 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100
User=140.09s Real=152.81s Sys=11.26s
User=118.39s Real=124.16s Sys=5.71s
LATERAL PROFILE CUMULATIVE LATERAL PROFILE
bin Mean rms bin Mean rms
0.00-> 1.11 radl: 14.27% 5.32% 0-> 1.11 radl: 14.27% 5.32%
1.11-> 2.22 radl: 25.49% 10.73% 0-> 2.22 radl: 39.76% 12.31%
2.22-> 3.33 radl: 24.35% 9.19% 0-> 3.33 radl: 64.11% 14.46%
3.33-> 4.44 radl: 14.08% 8.04% 0-> 4.44 radl: 78.19% 12.42%
4.44-> 5.55 radl: 7.56% 5.98% 0-> 5.55 radl: 85.75% 9.56%
5.55-> 6.66 radl: 4.56% 4.61% 0-> 6.66 radl: 90.31% 6.95%
6.66-> 7.77 radl: 2.53% 3.85% 0-> 7.77 radl: 92.84% 4.92%
7.77-> 8.88 radl: 1.36% 2.46% 0-> 8.88 radl: 94.20% 3.96%
8.88-> 9.99 radl: 0.81% 2.04% 0-> 9.99 radl: 95.00% 3.23%
0.00-> 1.11 radl: 13.95% 5.86% 0-> 1.11 radl: 13.95% 5.86%
1.11-> 2.22 radl: 24.45% 11.26% 0-> 2.22 radl: 38.40% 14.27%
2.22-> 3.33 radl: 21.91% 9.16% 0-> 3.33 radl: 60.31% 16.74%
3.33-> 4.44 radl: 13.94% 8.39% 0-> 4.44 radl: 74.25% 15.37%
4.44-> 5.55 radl: 9.45% 7.28% 0-> 5.55 radl: 83.71% 11.88%
5.55-> 6.66 radl: 5.33% 6.03% 0-> 6.66 radl: 89.04% 8.36%
6.66-> 7.77 radl: 3.38% 4.46% 0-> 7.77 radl: 92.41% 5.90%
7.77-> 8.88 radl: 1.43% 2.94% 0-> 8.88 radl: 93.84% 3.90%
8.88-> 9.99 radl: 0.98% 2.37% 0-> 9.99 radl: 94.82% 3.19%
@@ -314,21 +314,21 @@ Run Summary
bin Mean rms bin Mean rms
0.00-> 0.11 radl: 66.35% 10.09% 0-> 0.11 radl: 66.35% 10.09%
0.11-> 0.22 radl: 16.35% 6.18% 0-> 0.22 radl: 82.70% 7.45%
0.22-> 0.33 radl: 5.98% 3.96% 0-> 0.33 radl: 88.68% 5.74%
0.33-> 0.44 radl: 3.19% 3.15% 0-> 0.44 radl: 91.87% 4.09%
0.44-> 0.56 radl: 1.94% 2.23% 0-> 0.56 radl: 93.81% 3.33%
0.56-> 0.67 radl: 1.19% 1.25% 0-> 0.67 radl: 95.00% 3.23%
0.00-> 0.11 radl: 65.09% 8.82% 0-> 0.11 radl: 65.09% 8.82%
0.11-> 0.22 radl: 17.01% 6.52% 0-> 0.22 radl: 82.10% 7.04%
0.22-> 0.33 radl: 6.93% 4.24% 0-> 0.33 radl: 89.02% 5.40%
0.33-> 0.44 radl: 3.06% 3.03% 0-> 0.44 radl: 92.08% 3.54%
0.44-> 0.56 radl: 1.71% 1.25% 0-> 0.56 radl: 93.79% 3.27%
0.56-> 0.67 radl: 1.03% 0.93% 0-> 0.67 radl: 94.82% 3.19%
SUMMARY
energy deposit : 95.00 % E0 +- 3.23 % E0
charged traklen: 13.59 radl +- 0.48 radl
neutral traklen: 200.27 radl +- 20.88 radl
energy deposit : 94.82 % E0 +- 3.19 % E0
charged traklen: 13.56 radl +- 0.46 radl
neutral traklen: 200.51 radl +- 16.58 radl
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 617458126, 1124214817
Current couple of seeds = 576966569, 1968644705
----------------------------------------
@@ -35,3 +35,6 @@
10 : radial energy profile
11 : cumulated radial energy profile
12 : rms of cumulated radial energy profile
21 : edep distrib as function of kine energy of contributing particle
22 : cumulative distrib of 21
@@ -3,4 +3,5 @@
COMMON/CELOSS/ SEL1(NBIN), SEL1C(NBIN), SER1(NBIN), SER1C(NBIN),
+ SEL2(NBIN), SEL2C(NBIN), SER2(NBIN), SER2C(NBIN),
+ DEDL(NBIN), DEDR(NBIN) , FNPAT(NBIN,3),
+ STRCH,STRCH1,STRCH2,STRNE,STRNE1,STRNE2
+ STRCH,STRCH1,STRCH2,STRNE,STRNE1,STRNE2,
+ EDEPCH,EDEPNE
@@ -22,6 +22,7 @@
* History
* -------
*
* 27-08-01 : added histo 21 and 22 : edep distribution
* 08-02-99 : adapted for Geant4 comparison: electromagnetic/test/TestEm2
* 17-02-98 : adapted to Unix + interactive + graphic
* 21-01-90 : Simplified version (i.e. near gexam1)
@@ -31,11 +31,13 @@
DEDL(NL) = DEDL(NL) + DESTEP
ENDIF
*
* *** track length
* *** track length and total energy deposit
IF (CHARGE.NE.0.) THEN
STRCH = STRCH + STEP
STRCH = STRCH + STEP
EDEPCH = EDEPCH + DESTEP
ELSE
STRNE = STRNE + STEP
STRNE = STRNE + STEP
EDEPNE = EDEPNE + DESTEP
ENDIF
*
* *** Particle's flux
@@ -46,5 +48,10 @@
IF (IPART.LE.3) FNPAT(NPL,IPART) = FNPAT(NPL,IPART) + 1.
NLOLD = NL
ENDIF
*
*
* *** energy of particles contributing to edep
IF ((DESTEP).GT.0.)THEN
elog = log10((gekin+destep)/pkine(3))
call hfill (21,elog,0.,destep)
ENDIF
END
@@ -29,7 +29,7 @@
* *** achieve initialization
NLTOT = MIN(NLTOT,NBIN)
NRTOT = MIN(NRTOT,NBIN)
CALL VZERO(SEL1,13*NBIN+6)
CALL VZERO(SEL1,13*NBIN+8)
*
CALL GZINIT
CALL GPART
@@ -10,9 +10,9 @@
#include "celoss.inc"
*
DIMENSION XSEL1(NBIN),XSEL1C(NBIN),XSER1(NBIN),XSER1C(NBIN),
+ XSEL2(NBIN),XSEL2C(NBIN),XSER2(NBIN),XSER2C(NBIN)
*
+ XSEL2(NBIN),XSEL2C(NBIN),XSER2(NBIN),XSER2C(NBIN)
DIMENSION EDIST(100),EDISTC(100)
*
CALL GLAST
*
@@ -21,7 +21,11 @@
*
* *** Normalize and print energy distribution
XEVENT=IEVENT
CNORM = 100./(XEVENT*PKINE(3))
CNORM = 100./(XEVENT*PKINE(3))
*
* *** mean total energy deposit by charged and by neutral
EDEPCH = CNORM*EDEPCH
EDEPNE = CNORM*EDEPNE
*
* *** longitudinal profile
DO 2 I = 1,NLTOT
@@ -67,9 +71,24 @@
PRINT 754,B0,B1,XSER1(I),XSER2(I),B1,XSER1C(I),XSER2C(I)
16 CONTINUE
*
* *** normalize histo of energy ditribution of contributing particles
* and compute cumulative distribution
SUM = HSUM (21)
CALL HUNPAK(21,EDIST,'HIST',1)
EDIST( 1) = EDIST(1)*100/SUM
EDISTC(1) = EDIST(1)
DO 17 I=2,100
EDIST (I) = EDIST (I)*100/SUM
EDISTC(I) = EDISTC(I-1) + EDIST(I)
17 CONTINUE
CALL HPAK (21,EDIST)
CALL HPAK (22,EDISTC)
*
* *** print summary
PRINT 770
PRINT 771,XSEL1C(NLTOT),XSEL2C(NLTOT)
PRINT 774,EDEPCH
PRINT 775,EDEPNE
PRINT 772,XTRCH1,XTRCH2
PRINT 773,XTRNE1,XTRNE2
*
@@ -88,7 +107,9 @@
770 FORMAT(///,30X,'SUMMARY',/)
771 FORMAT( 25X,'energy deposit : ',F7.2,' % E0 +- ',F7.2,' % E0')
772 FORMAT( 25X,'charged traklen: ',F7.2,' radl +- ',F7.2,' radl')
773 FORMAT( 25X,'neutral traklen: ',F7.2,' radl +- ',F7.2,' radl')
773 FORMAT( 25X,'neutral traklen: ',F7.2,' radl +- ',F7.2,' radl')
774 FORMAT( 25X,'edep by charged: ',F7.2,' % E0')
775 FORMAT( 25X,'edep by neutral: ',F7.2,' % E0')
*
END
@@ -56,6 +56,16 @@
CALL HBPROF(11,'cumul radial energy dep. (in percent of E inc)'
*, NRTOT, RMIN,RMAX, 0., 100.,' ')
CALL HBOOK1(12,'resolution: cumul R energy dep. (% of E inc)'
*, NRTOT, RMIN,RMAX, 0.0)
*, NRTOT, RMIN,RMAX, 0.0)
*
* *** Origin of the deposited energy
tminlog = -6.
tmaxlog = 0.
CALL HBOOK1(21,'edep (normalized 100 percent) versus log(ekin/e0)'
*, 100, tminlog, tmaxlog, 0.0)
CALL HBOOK1(22,'cumul edep (100 percent) versus log(ekin/e0)'
*, 100, tminlog, tmaxlog, 0.0)
*
END
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2DetectorConstruction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2DetectorMessenger.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2EventAction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2EventActionMessenger.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PhysicsList.hh,v 1.3 2000/04/17 11:25:52 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PhysicsListMessenger.hh,v 1.1 2000/04/17 11:25:52 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,10 +5,12 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2RunAction.hh,v 1.5 2000/12/07 12:14:06 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2RunAction.hh,v 1.7 2001/03/08 14:28:14 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// 08.03.01 Hisaya: Adapted MyVector for STL
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -24,8 +26,9 @@
#include "G4Positron.hh"
#include "globals.hh"
#include "g4rw/tvvector.h"
typedef G4RWTValVector<G4double> MyVector;
#include "g4std/vector"
typedef G4std::vector<G4double> MyVector;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -35,6 +38,11 @@ class Em2RunActionMessenger;
class G4Run;
#ifndef G4NOHIST
class HepTupleManager;
class HepHistogram;
#endif
class Em2RunAction : public G4UserRunAction
{
public:
@@ -91,7 +99,16 @@ class Em2RunAction : public G4UserRunAction
G4double sum2NeutrTrLength;
Em2RunActionMessenger* runMessenger;
G4int saveRndm;
G4int saveRndm;
#ifndef G4NOHIST
HepTupleManager* hbookManager;
HepHistogram *histo1, *histo2, *histo3;
HepHistogram *histo4, *histo5, *histo6;
HepHistogram *histo7, *histo8, *histo9;
HepHistogram *hist10, *hist11, *hist12;
#endif
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -101,10 +118,10 @@ void Em2RunAction::initializePerEvent()
{
//initialize arrays of energy deposit per bin
for (G4int i=0; i<nLbin; i++)
{ dEdL(i) = 0.; }
{ dEdL[i] = 0.; }
for (G4int j=0; j<nRbin; j++)
{ dEdR(j) = 0.; }
{ dEdR[j] = 0.; }
//initialize tracklength
ChargTrLength = NeutrTrLength = 0.;
@@ -124,7 +141,7 @@ void Em2RunAction::fillPerTrack(G4double charge, G4double trkLength)
inline
void Em2RunAction::fillPerStep(G4double dEstep, G4int Lbin, G4int Rbin)
{
dEdL(Lbin) += dEstep; dEdR(Rbin) += dEstep;
dEdL[Lbin] += dEstep; dEdR[Rbin] += dEstep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -132,9 +149,9 @@ void Em2RunAction::fillPerStep(G4double dEstep, G4int Lbin, G4int Rbin)
inline
void Em2RunAction::particleFlux(G4ParticleDefinition* particle, G4int Lplan)
{
if (particle == G4Gamma::Gamma()) gammaFlux(Lplan)++;
else if (particle == G4Electron::Electron()) electronFlux(Lplan)++;
else if (particle == G4Positron::Positron()) positronFlux(Lplan)++;
if (particle == G4Gamma::Gamma()) gammaFlux[Lplan]++;
else if (particle == G4Electron::Electron()) electronFlux[Lplan]++;
else if (particle == G4Positron::Positron()) positronFlux[Lplan]++;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2RunActionMessenger.hh,v 1.3 2000/01/21 10:56:15 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2SteppingAction.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2SteppingVerbose.hh,v 1.4 2000/12/06 14:12:16 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2SteppingVerbose.hh,v 1.5 2001/02/19 14:06:06 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// This class manages the verbose outputs in G4SteppingManager.
// It inherits from G4SteppingVerbose.
@@ -15,8 +15,6 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
class Em2SteppingVerbose;
#ifndef Em2SteppingVerbose_h
#define Em2SteppingVerbose_h 1
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2TrackingAction.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2VisManager.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2DetectorConstruction.cc,v 1.4 2000/05/09 13:56:33 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2DetectorMessenger.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2EventAction.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2EventAction.cc,v 1.3 2001/02/20 15:58:35 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -45,10 +45,20 @@ Em2EventAction::~Em2EventAction()
void Em2EventAction::BeginOfEventAction(const G4Event* evt)
{
G4int evtNb = evt->GetEventID();
if (evtNb%printModulo == 0)
G4cout << "\n---> Begin Of Event: " << evtNb << G4endl;
G4int evtNb = evt->GetEventID();
//printing survey
if (evtNb%printModulo == 0)
G4cout << "\n---> Begin of Event: " << evtNb << G4endl;
//save rndm status
if (Em2Run->GetRndmFreq() == 2)
{
HepRandom::saveEngineStatus("beginOfEvent.rndm");
if (evtNb%printModulo == 0) HepRandom::showEngineStatus();
}
//additional initializations
Em2Run->initializePerEvent();
}
@@ -70,18 +80,6 @@ void Em2EventAction::EndOfEventAction(const G4Event* evt)
trj->DrawTrajectory(50);
}
}
//save rndm status
if (Em2Run->GetRndmFreq() == 2)
{
HepRandom::saveEngineStatus("endOfEvent.rndm");
G4int evtNb = evt->GetEventID();
if (evtNb%printModulo == 0)
{
G4cout << "\n---> End of Event: " << evtNb << G4endl;
HepRandom::showEngineStatus();
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2EventActionMessenger.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PhysicsList.cc,v 1.5 2000/12/06 14:12:16 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PhysicsListMessenger.cc,v 1.1 2000/04/17 11:26:49 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,9 +5,12 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2RunAction.cc,v 1.6 2000/12/07 12:14:07 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2RunAction.cc,v 1.10 2001/03/27 08:58:15 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// 08.03.01 Hisaya: Adapted MyVector for STL
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -29,6 +32,10 @@
#include "Randomize.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em2RunAction::Em2RunAction(Em2DetectorConstruction* det,
@@ -36,25 +43,30 @@ Em2RunAction::Em2RunAction(Em2DetectorConstruction* det,
:Em2Det(det),Em2Kin(kin)
{
nLbin = Em2Det->GetnLtot();
dEdL = *new MyVector(nLbin);
sumELongit = *new MyVector(nLbin);
sumELongitCumul = *new MyVector(nLbin);
sumE2Longit = *new MyVector(nLbin);
sumE2LongitCumul = *new MyVector(nLbin);
dEdL.resize(nLbin, 0.0);
sumELongit.resize(nLbin, 0.0);
sumELongitCumul.resize(nLbin, 0.0);
sumE2Longit.resize(nLbin, 0.0);
sumE2LongitCumul.resize(nLbin, 0.0);
gammaFlux = *new MyVector(nLbin);
electronFlux = *new MyVector(nLbin);
positronFlux = *new MyVector(nLbin);
gammaFlux.resize(nLbin, 0.0);
electronFlux.resize(nLbin, 0.0);
positronFlux.resize(nLbin, 0.0);
nRbin = Em2Det->GetnRtot();
dEdR = *new MyVector(nRbin);
sumERadial = *new MyVector(nRbin);
sumERadialCumul = *new MyVector(nRbin);
sumE2Radial = *new MyVector(nRbin);
sumE2RadialCumul = *new MyVector(nRbin);
dEdR.resize(nRbin, 0.0);
sumERadial.resize(nRbin, 0.0);
sumERadialCumul.resize(nRbin, 0.0);
sumE2Radial.resize(nRbin, 0.0);
sumE2RadialCumul.resize(nRbin, 0.0);
runMessenger = new Em2RunActionMessenger(this);
saveRndm = 1;
saveRndm = 1;
#ifndef G4NOHIST
hbookManager = NULL;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -68,12 +80,69 @@ Em2RunAction::~Em2RunAction()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void Em2RunAction::bookHisto()
{}
{
#ifndef G4NOHIST
hbookManager = new HBookFile("TestEm2.paw", 68);
assert (hbookManager != 0);
G4double Ekin = Em2Kin->GetParticleGun()->GetParticleEnergy();
G4double dLradl = Em2Det->GetdLradl();
G4double dRradl = Em2Det->GetdRradl();
histo1 = hbookManager->histogram("total energy deposit (percent of E inc)",
100,0.,100.);
histo2 = hbookManager->histogram("total charged tracklength (radl)",
100,0.,100.*Ekin/GeV);
histo3 = hbookManager->histogram("total neutral tracklength (radl)",
100,0.,1000.*Ekin/GeV);
histo4 = hbookManager->histogram("longit energy profile (% of E inc)",
nLbin,0.,nLbin*dLradl);
G4double Zmin=0.5*dLradl, Zmax=Zmin+nLbin*dLradl;
histo5 = hbookManager->histogram("cumul longit energy dep (% of E inc)",
nLbin,Zmin,Zmax);
histo6 = hbookManager->histogram("rms on cumul longit Edep (% of E inc)",
nLbin,Zmin,Zmax);
histo7 = hbookManager->histogram("nb of gamma per plane",
nLbin,Zmin,Zmax);
histo8 = hbookManager->histogram("nb of positron per plane",
nLbin,Zmin,Zmax);
histo9 = hbookManager->histogram("nb of electron per plane",
nLbin,Zmin,Zmax);
hist10 = hbookManager->histogram("radial energy profile (% of E inc)",
nRbin,0.,nRbin*dRradl);
G4double Rmin=0.5*dRradl, Rmax=Rmin+nRbin*dRradl;
hist11 = hbookManager->histogram("cumul radial energy dep (% of E inc)",
nRbin,Rmin,Rmax);
hist12 = hbookManager->histogram("rms on cumul radial Edep (% of E inc)",
nRbin,Rmin,Rmax);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void Em2RunAction::cleanHisto()
{}
{
#ifndef G4NOHIST
// Write histogram file
hbookManager->write();
delete histo1; delete histo2; delete histo3;
delete histo4; delete histo5; delete histo6;
delete histo7; delete histo8; delete histo9;
delete hist10; delete hist11; delete hist12;
delete hbookManager;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -93,29 +162,34 @@ void Em2RunAction::BeginOfRunAction(const G4Run* aRun)
G4int nLtot = Em2Det->GetnLtot();
if(nLbin != nLtot)
{dEdL.reshape(nLbin=nLtot);
sumELongit.reshape(nLbin) ; sumE2Longit.reshape(nLbin);
sumELongitCumul.reshape(nLbin); sumE2LongitCumul.reshape(nLbin);
gammaFlux.reshape(nLbin) ;
electronFlux.reshape(nLbin) ; positronFlux.reshape(nLbin);
{dEdL.resize(nLbin=nLtot, 0.0);
sumELongit.resize(nLbin, 0.0);
sumE2Longit.resize(nLbin, 0.0);
sumELongitCumul.resize(nLbin, 0.0);
sumE2LongitCumul.resize(nLbin, 0.0);
gammaFlux.resize(nLbin, 0.0);
electronFlux.resize(nLbin, 0.0);
positronFlux.resize(nLbin, 0.0);
rebin=true;
}
G4int nRtot = Em2Det->GetnRtot();
if(nRbin != nRtot)
{dEdR.reshape(nRbin=nRtot);
sumERadial.reshape(nRbin) ; sumE2Radial.reshape(nRbin);
sumERadialCumul.reshape(nRbin); sumE2RadialCumul.reshape(nRbin);
{dEdR.resize(nRbin=nRtot, 0.0);
sumERadial.resize(nRbin, 0.0);
sumE2Radial.resize(nRbin, 0.0);
sumERadialCumul.resize(nRbin, 0.0);
sumE2RadialCumul.resize(nRbin, 0.0);
rebin=true;
}
//initialize arrays of cumulative energy deposition
//
for (G4int i=0; i<nLbin; i++)
sumELongit(i)=sumE2Longit(i)=sumELongitCumul(i)=sumE2LongitCumul(i)=0.;
sumELongit[i]=sumE2Longit[i]=sumELongitCumul[i]=sumE2LongitCumul[i]=0.;
for (G4int j=0; j<nRbin; j++)
sumELongit(j)=sumE2Longit(j)=sumELongitCumul(j)=sumE2LongitCumul(j)=0.;
sumELongit[j]=sumE2Longit[j]=sumELongitCumul[j]=sumE2LongitCumul[j]=0.;
//initialize track length
sumChargTrLength=sum2ChargTrLength=sumNeutrTrLength=sum2NeutrTrLength=0.;
@@ -143,27 +217,39 @@ void Em2RunAction::fillPerEvent()
G4double dLCumul = 0.;
for (G4int i=0; i<nLbin; i++)
{
sumELongit(i) += dEdL(i);
sumE2Longit(i) += dEdL(i)*dEdL(i);
dLCumul += dEdL(i);
sumELongitCumul(i) += dLCumul;
sumE2LongitCumul(i) += dLCumul*dLCumul;
sumELongit[i] += dEdL[i];
sumE2Longit[i] += dEdL[i]*dEdL[i];
dLCumul += dEdL[i];
sumELongitCumul[i] += dLCumul;
sumE2LongitCumul[i] += dLCumul*dLCumul;
}
G4double dRCumul = 0.;
for (G4int j=0; j<nRbin; j++)
{
sumERadial(j) += dEdR(j);
sumE2Radial(j) += dEdR(j)*dEdR(j);
dRCumul += dEdR(j);
sumERadialCumul(j) += dRCumul;
sumE2RadialCumul(j) += dRCumul*dRCumul;
sumERadial[j] += dEdR[j];
sumE2Radial[j] += dEdR[j]*dEdR[j];
dRCumul += dEdR[j];
sumERadialCumul[j] += dRCumul;
sumE2RadialCumul[j] += dRCumul*dRCumul;
}
sumChargTrLength += ChargTrLength;
sum2ChargTrLength += ChargTrLength*ChargTrLength;
sumNeutrTrLength += NeutrTrLength;
sum2NeutrTrLength += NeutrTrLength*NeutrTrLength;
sum2NeutrTrLength += NeutrTrLength*NeutrTrLength;
#ifndef G4NOHIST
//fill histograms
//
G4double Ekin=Em2Kin->GetParticleGun()->GetParticleEnergy();
G4double mass=Em2Kin->GetParticleGun()->GetParticleDefinition()->GetPDGMass();
G4double radl=Em2Det->GetMaterial()->GetRadlen();
histo1->accumulate(100.*dLCumul/(Ekin+mass));
histo2->accumulate(ChargTrLength/radl);
histo3->accumulate(NeutrTrLength/radl);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -186,42 +272,61 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun)
//
G4double dLradl = Em2Det->GetdLradl();
MyVector MeanELongit (nLbin), rmsELongit (nLbin);
MyVector MeanELongit(nLbin), rmsELongit(nLbin);
MyVector MeanELongitCumul(nLbin), rmsELongitCumul(nLbin);
G4int i; G4double bin;
for (i=0; i<nLbin; i++)
{
MeanELongit(i) = norme*sumELongit(i);
rmsELongit(i) = norme*sqrt(abs(NbOfEvents*sumE2Longit(i)
- sumELongit(i)*sumELongit(i)));
MeanELongit[i] = norme*sumELongit[i];
rmsELongit[i] = norme*sqrt(abs(NbOfEvents*sumE2Longit[i]
- sumELongit[i]*sumELongit[i]));
MeanELongitCumul(i) = norme*sumELongitCumul(i);
rmsELongitCumul(i) = norme*sqrt(abs(NbOfEvents*sumE2LongitCumul(i)
- sumELongitCumul(i)*sumELongitCumul(i)));
MeanELongitCumul[i] = norme*sumELongitCumul[i];
rmsELongitCumul[i] = norme*sqrt(abs(NbOfEvents*sumE2LongitCumul[i]
- sumELongitCumul[i]*sumELongitCumul[i]));
gammaFlux (i) /= NbOfEvents;
electronFlux(i) /= NbOfEvents;
positronFlux(i) /= NbOfEvents;
gammaFlux [i] /= NbOfEvents;
electronFlux[i] /= NbOfEvents;
positronFlux[i] /= NbOfEvents;
#ifndef G4NOHIST
bin = i*dLradl;
histo4->accumulate(bin,MeanELongit[i]/dLradl);
bin = (i+1)*dLradl;
histo5->accumulate(bin,MeanELongitCumul[i]);
histo6->accumulate(bin, rmsELongitCumul[i]);
histo7->accumulate(bin, gammaFlux[i]);
histo8->accumulate(bin, positronFlux[i]);
histo9->accumulate(bin, electronFlux[i]);
#endif
}
//radial
//
G4double dRradl = Em2Det->GetdRradl();
MyVector MeanERadial (nRbin), rmsERadial (nRbin);
MyVector MeanERadial(nRbin), rmsERadial(nRbin);
MyVector MeanERadialCumul(nRbin), rmsERadialCumul(nRbin);
for (i=0; i<nRbin; i++)
{
MeanERadial(i) = norme*sumERadial(i);
rmsERadial(i) = norme*sqrt(abs(NbOfEvents*sumE2Radial(i)
- sumERadial(i)*sumERadial(i)));
MeanERadial[i] = norme*sumERadial[i];
rmsERadial[i] = norme*sqrt(abs(NbOfEvents*sumE2Radial[i]
- sumERadial[i]*sumERadial[i]));
MeanERadialCumul(i) = norme*sumERadialCumul(i);
rmsERadialCumul(i) = norme*sqrt(abs(NbOfEvents*sumE2RadialCumul(i)
- sumERadialCumul(i)*sumERadialCumul(i)));
MeanERadialCumul[i] = norme*sumERadialCumul[i];
rmsERadialCumul[i] = norme*sqrt(abs(NbOfEvents*sumE2RadialCumul[i]
- sumERadialCumul[i]*sumERadialCumul[i]));
#ifndef G4NOHIST
bin = i*dRradl;
hist10->accumulate(bin,MeanERadial[i]/dRradl);
bin = (i+1)*dRradl;
hist11->accumulate(bin,MeanERadialCumul[i]);
hist12->accumulate(bin, rmsERadialCumul[i]);
#endif
}
//track length
@@ -252,11 +357,11 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun)
G4double inf=i*dLradl, sup=inf+dLradl;
G4cout << G4std::setw(8) << inf << "->" << G4std::setw(5) << sup << " radl: "
<< G4std::setw(7) << MeanELongit(i) << "% "
<< G4std::setw(9) << rmsELongit(i) << "% "
<< G4std::setw(7) << MeanELongit[i] << "% "
<< G4std::setw(9) << rmsELongit[i] << "% "
<< " 0->" << G4std::setw(5) << sup << " radl: "
<< G4std::setw(7) << MeanELongitCumul(i) << "% "
<< G4std::setw(7) << rmsELongitCumul(i) << "% "
<< G4std::setw(7) << MeanELongitCumul[i] << "% "
<< G4std::setw(7) << rmsELongitCumul[i] << "% "
<<G4endl;
}
@@ -273,18 +378,18 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun)
G4double inf=i*dRradl, sup=inf+dRradl;
G4cout << G4std::setw(8) << inf << "->" << G4std::setw(5) << sup << " radl: "
<< G4std::setw(7) << MeanERadial(i) << "% "
<< G4std::setw(9) << rmsERadial(i) << "% "
<< G4std::setw(7) << MeanERadial[i] << "% "
<< G4std::setw(9) << rmsERadial[i] << "% "
<< " 0->" << G4std::setw(5) << sup << " radl: "
<< G4std::setw(7) << MeanERadialCumul(i) << "% "
<< G4std::setw(7) << rmsERadialCumul(i) << "% "
<< G4std::setw(7) << MeanERadialCumul[i] << "% "
<< G4std::setw(7) << rmsERadialCumul[i] << "% "
<<G4endl;
}
G4cout << G4endl;
G4cout << G4std::setw(37) << "SUMMARY" << G4endl;
G4cout << G4std::setw(42) << "energy deposit : "
<< G4std::setw(7) << MeanELongitCumul(nLbin-1) << " % E0 +- "
<< G4std::setw(7) << rmsELongitCumul(nLbin-1) << " % E0" << G4endl;
<< G4std::setw(7) << MeanELongitCumul[nLbin-1] << " % E0 +- "
<< G4std::setw(7) << rmsELongitCumul[nLbin-1] << " % E0" << G4endl;
G4cout << G4std::setw(42) << "charged traklen: "
<< G4std::setw(7) << MeanChargTrLength << " radl +- "
<< G4std::setw(7) << rmsChargTrLength << " radl" << G4endl;
@@ -297,7 +402,7 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun)
G4cout.precision(oldprec);
// save Rndm status
if (saveRndm == 1)
if (saveRndm > 0)
{ HepRandom::showEngineStatus();
HepRandom::saveEngineStatus("endOfRun.rndm");
}
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2RunActionMessenger.cc,v 1.3 2000/01/21 10:56:16 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2RunActionMessenger.cc,v 1.4 2001/02/20 15:58:36 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -35,8 +35,8 @@ Em2RunActionMessenger::Em2RunActionMessenger(Em2RunAction* run)
RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files.");
RndmSaveCmd->SetGuidance("freq = 0 not saved");
RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm");
RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm");
RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm");
RndmSaveCmd->SetParameterName("frequency",false);
RndmSaveCmd->SetRange("frequency>=0 && frequency<=2");
RndmSaveCmd->AvailableForStates(PreInit,Idle);
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2SteppingAction.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: Em2SteppingVerbose.cc,v 1.4 2000/12/06 14:12:16 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: Em2SteppingVerbose.cc,v 1.6 2001/02/19 14:06:36 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -46,7 +46,7 @@ void Em2SteppingVerbose::StepInfo()
<< G4std::setw( 9) << "dEStep" << " "
<< G4std::setw(10) << "StepLeng"
<< G4std::setw(10) << "TrakLeng"
<< G4std::setw(10) << "NextVolu"
<< G4std::setw(10) << "Volume" << " "
<< G4std::setw(10) << "Process" << G4endl;
}
@@ -61,16 +61,17 @@ void Em2SteppingVerbose::StepInfo()
// if( fStepStatus != fWorldBoundary){
if( fTrack->GetNextVolume() != 0 ) {
G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName();
G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << G4std::setw(10) << "OutOfWorld";
}
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){
G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
G4cout << " "
<< G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
} else {
G4cout << "User Limit";
G4cout << " UserLimit";
}
G4cout << G4endl;
@@ -86,12 +87,12 @@ void Em2SteppingVerbose::StepInfo()
<< ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).entries()
<< "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(G4int lp1=(*fSecondary).entries()-tN2ndariesTot;
lp1<(*fSecondary).entries(); lp1++){
for(G4int lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< G4std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
@@ -115,8 +116,8 @@ void Em2SteppingVerbose::StepInfo()
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
void Em2SteppingVerbose::TrackingStarted()
@@ -134,7 +135,7 @@ G4int prec = G4cout.precision(3);
<< G4std::setw( 9) << "dEStep" << " "
<< G4std::setw(10) << "StepLeng"
<< G4std::setw(10) << "TrakLeng"
<< G4std::setw(10) << "NextVolu"
<< G4std::setw(10) << "Volume" << " "
<< G4std::setw(10) << "Process" << G4endl;
G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
@@ -147,13 +148,13 @@ G4int prec = G4cout.precision(3);
<< G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if(fTrack->GetNextVolume()){
G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " ";
G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << G4std::setw(10) << "OutOfWorld" << " ";
G4cout << G4std::setw(10) << "OutOfWorld";
}
G4cout << G4std::setw(10) << "initStep" << G4endl;
G4cout << " initStep" << G4endl;
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -7,7 +7,7 @@
// and all its terms.
//
// $Id: Em2TrackingAction.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em2VisManager.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.4 2000/12/07 12:38:24 maire Exp $
# $Id: GNUmakefile,v 1.5 2001/02/21 11:17:02 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -16,4 +16,12 @@ all: lib bin
include $(G4INSTALL)/config/architecture.gmk
G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.4 2000/12/07 12:38:24 maire Exp $
$Id: History,v 1.7 2001/03/26 16:01:57 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,26 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26-03-01 mma (testem3-V03-00-04)
- change in histogramming : 1d histo of Edep/Ebeam
in each absorber instead of ntuple, both in G4 and G3.
- interactive command /run/setHisto (in G4) and ffread
data card *histo (in G3) to control the binning of the
histos.
- in G3, new data card cutpr to set bcute, dcute, ppcutm for
each tracking medium
- in gnumakefile : the cpp flag g4nohist=true by default.
--> no histograms in G4 by default.
21-02-01 mma (testem3-V03-00-03)
- hbook histograms restored
20-02-01 mma (testem3-V03-00-02)
-stepping verbose adapted for STL
-BirkAttenuation function
-save rndm at begin of event
07-12-00 mma (testem3-V02-00-03 & testem-noHist)
remove hbook histograms: GNUmakefile,runAction,eventAction
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2000/01/21 09:11:04 maire Exp $
$Id: README,v 1.4 2001/03/30 12:39:56 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -111,16 +111,19 @@ $Id: README,v 1.2 2000/01/21 09:11:04 maire Exp $
....
Idle> exit
7- NTUPLE
7- Histograms
Testem3 produce an Ntuple which is saved as testem3.histo
Content of this Ntuple:
Testem3 produces histograms which are saved as testem3.paw :
histo 1 : energy deposit in absorber 0 (edep/Ebeam)
histo 2 : energy deposit in absorber 1 (edep/Ebeam)
...etc...........
EAbs0 = energy deposit in absorber[0] per event
LAbs0 = charged track length in absorber[0] per event
........
EAbsN = energy deposit in absorber[N] per event
LAbsN = charged track length in absorber[N] per event
One can control the binning of the histo with the command:
/run/setHisto idAbsor nbin vmin vmax
...etc...........
Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile.
Currently, histograms in this example are implemented through the obsolete
CLHEP/Hist package, which is no longer supported. The implementation will
be replaced by direct call to the "analysis" module in a near future.

Some files were not shown because too many files have changed in this diff Show More