Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.6 2001/11/29 11:28:06 maire Exp $
# $Id: GNUmakefile,v 1.7 2002/05/31 17:10:34 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -20,8 +20,9 @@ G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
# for the aida-config command see the README file
CPPFLAGS += `aida-config --useHBook --include`
LDFLAGS += `aida-config --useHBook --lib`
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.15 2001/11/29 11:28:06 maire Exp $
$Id: History,v 1.20 2002/06/05 17:57:27 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,24 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
05-06-02 mma (testem1-V04-00-03)
-do not delete histos in destructor of RunAction
31-05-02 mma (testem1-V04-00-02)
-old histograming package clhep/hist replaced by AIDA 2.2/anaphe. See README
08-03-02 mma (testem1-V04-00-01)
- PhysicsList: unifomisation of the setG(E)Cut commands
06-02-02 mma (testem1-V04-00-00)
06-12-01 mma
- In PrimaryGeneratorAction, possibility to fix the vertex at front face,
and to randomize the beam spot.
- command /gun/rndm in PrimaryGeneratorMessenger
- similar functionality in geant3: gukine.F
- change output precision in RunAction (+uglast.F)
29-11-01 mma (testem1-V03-02-02)
- EventAction: DrawTrack "none"
- small change in vis.mac
@@ -1,4 +1,4 @@
$Id: README,v 1.4 2001/10/26 12:51:21 maire Exp $
$Id: README,v 1.6 2002/05/31 17:10:34 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -42,7 +42,11 @@ $Id: README,v 1.4 2001/10/26 12:51:21 maire Exp $
in the PrimaryGeneratorAction class, and can be changed via the G4
build-in commands of ParticleGun class (see the macros provided with
this example).
In addition one can choose randomly the impact point of the incident
particle. The corresponding interactive command is built in
PrimaryGeneratorMessenger class.
A RUN is a set of events.
@@ -98,8 +102,24 @@ $Id: README,v 1.4 2001/10/26 12:51:21 maire Exp $
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.
Note that histograms are disabled via the flag G4NOHIST in the GNUmakefile.
7- Using the Anaphe implementation of the AIDA 2.2 histograms:
--------------------------------------------------------------
In order to use the Anaphe implementation of the AIDA 2.2 interfaces,
prepare some environment variables by source-ing one of the following
startup scripts (depending on your compiler version):
# gcc-2.95.2
source $LHCXXTOP/share/LHCXX/4.0.1/install/sharedstart.sh or .csh
# egcs_1.1.2 (aka gcc 2.91.66)
source $LHCXXTOP/share/LHCXX/4.0.1-sec/install/sharedstart.sh or .csh
At CERN, $LHCXXTOP is /afs/cern.ch/sw/lhcxx, you may want to use a
more recent release, check http:/cern.ch/anaphe for more information.
After this, you will have access to the 'aida-config' command which
is used in the GNUmakefile.
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: TestEm1.cc,v 1.7 2001/11/29 11:28:06 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: TestEm1.cc,v 1.8 2001/12/07 11:49:08 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -68,7 +68,7 @@ int main(int argc,char** argv) {
Em1DetectorConstruction* det;
runManager->SetUserInitialization(det = new Em1DetectorConstruction);
runManager->SetUserInitialization(new Em1PhysicsList(det));
runManager->SetUserAction(new Em1PrimaryGeneratorAction);
runManager->SetUserAction(new Em1PrimaryGeneratorAction(det));
#ifdef Em1NoOptimize
#ifdef G4VIS_USE
@@ -1,4 +1,4 @@
# $Id: TestEm1.in,v 1.3 2001/10/31 15:49:30 maire Exp $
# $Id: TestEm1.in,v 1.4 2002/03/08 15:08:57 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 2.20 mm
/calor/cutE 6.05 mum
/run/particle/setGCut 2.20 mm
/run/particle/setECut 6.05 mum
#
/run/initialize
#
@@ -1,6 +1,6 @@
**********************************************
Geant4 version $Name: geant4-04-00 $
(14-Dec-2001)
Geant4 version $Name: geant4-04-01 $
(28-Feb-2002)
Copyright : Geant4 Collaboration
**********************************************
Visualization Manager instantiating...
@@ -17,12 +17,12 @@ Current available graphics systems are:
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
#
/calor/cutG 2.20 mm
/calor/cutE 6.05 mum
/run/particle/setGCut 2.20 mm
/run/particle/setECut 6.05 mum
#
/run/initialize
***** Table : Nb of materials = 9 *****
***** Table : Nb of materials = 11 *****
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 %
@@ -44,27 +44,31 @@ Current available graphics systems are:
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: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm
---> Element: Germanium Z = 32.0 N = 72.6 A = 72.61 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 %
Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm
---> Element: Tungsten Z = 74.0 N = 183.8 A = 183.85 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm
---> Element: Lead Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.861 mm
---> Element: Uranium Z = 82.0 N = 238.0 A = 238.03 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm
---> Element: Uranium Z = 92.0 N = 238.0 A = 238.03 g/mole fractionMass: 100.00 % Abundance 100.00 %
The Box is 20 m of Aluminium
Em1PhysicsList::SetCuts:CutLength : 1 (mm)
phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z
Sandia crossSection below 50 KeV
PhysicsTables from 50 keV to 50 MeV in 100 bins.
phot: Total cross sections from Sandia parametrisation.
Em1PhysicsList::SetCuts:CutLength : 1 mm
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 10 keV to 100 GeV in 100 bins.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
@@ -125,7 +129,9 @@ Cut in range
liquidArgon 2.2 mm 6.05 mum
Aluminium 2.2 mm 6.05 mum
Silicon 2.2 mm 6.05 mum
Germanium 2.2 mm 6.05 mum
Iron 2.2 mm 6.05 mum
Tungsten 2.2 mm 6.05 mum
Lead 2.2 mm 6.05 mum
Uranium 2.2 mm 6.05 mum
Cut in energy
@@ -135,9 +141,11 @@ Cut in energy
liquidArgon 9.08 keV 3.98 keV
Aluminium 9.99 keV 9.97 keV
Silicon 10 keV 8.45 keV
Germanium 31.6 keV 32.7 keV
Iron 31.1 keV 43.3 keV
Tungsten 139 keV 59.7 keV
Lead 124 keV 42.8 keV
Uranium 143 keV 53.4 keV
Uranium 188 keV 56.1 keV
===================================================
#
/process/eLoss/StepFunction 0.183 170 micrometer
@@ -164,18 +172,18 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100
User=16s Real=19s Sys=2.6s
User=12s Real=23s Sys=2.8s
nb tracks/event neutral: 27.29 charged: 692.97
nb steps/event neutral: 145.49 charged: 1331.63
nb tracks/event neutral: 27.5700 charged: 695.0200
nb steps/event neutral: 148.5400 charged: 1331.6000
nb of process calls per event:
eIoni eBrem compt phot conv annihil
1305.51 24.92 118.20 26.09 1.20 1.20
eIoni eBrem phot compt conv annihil
1305.3700 24.8300 26.1700 120.9700 1.4000 1.4000
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 640041358, 1353064269
Current couple of seeds = 2126832091, 1419935556
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -0,0 +1,19 @@
LIST
C
C Photo electric; gamma 1 MeV
C
CALOR 10 (Germanium) 1. (size) 0. (field)
TRIG 100000
KINE 1 (gamma) 0.001 (Ekine) 1. (xBeam) 0.8 (rBeam)
DEBUG 10 5 1000
SWIT 0 (draw) 0 (save)
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.e+3 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
ABAN 0
PHOT 1
COMP 0
PAIR 0
BREM 0
MULS 1
LOSS 1
TIME 2=1.
@@ -3,20 +3,30 @@
*
* Generates Kinematics for primary track
*
* Data card Kine : Itype Ekine
* Data card Kine : Itype Ekine xbeam rbeam
*
#include "geant321/gcbank.inc"
#include "geant321/gcflag.inc"
#include "geant321/gckine.inc"
#include "geant321/gckine.inc"
#include "calor.inc"
*
DIMENSION VERTEX(3),PLAB(3)
dimension rndm(3)
*
DATA VERTEX/3*0./
DATA PLAB /3*0./
*
IF (PKINE(2).NE.0.) vertex(1) = -0.5*BoxSize
*
* random in YZ ?
if ((pkine(3).lt.0.).or.(pkine(3).gt.1.)) pkine(3) = 0.
rbeam = pkine(3)*0.5*BoxSize
call GRNDM (rndm,2)
*
VERTEX(2) = (2*rndm(1)-1.)*rbeam
VERTEX(3) = (2*rndm(2)-1.)*rbeam
*
CALL GSVERT(VERTEX,0,0,0,0,NVERT)
*
*
JPA = LQ(JPART-IKINE)
XMASS = Q(JPA+7)
@@ -31,7 +31,7 @@
CALL GSMATE( 7,'Tungsten' ,183.85, 74., 19.30 , 0.35, 18.5, 0,0)
CALL GSMATE( 8,'Lead' ,207.19, 82., 11.35 , 0.56, 18.5, 0,0)
CALL GSMATE( 9,'Uranium' ,238.03, 92., 18.95 , 0.32, 12. , 0,0)
*
CALL GSMATE(10,'Germanium', 72.61, 32., 5.323 , 2.30, 16.6, 0,0)
*
* *** Defines USER tracking media parameters
IFIELD = 0
@@ -40,6 +40,6 @@
760 FORMAT(//,1X,'nb of process calls per event: ',
+ /,3X,12A9)
761 FORMAT( 3X,12F9.2,//)
761 FORMAT( 3X,12F9.4,//)
*
END
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1DetectorConstruction.hh,v 1.4 2001/10/26 12:51:23 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1DetectorConstruction.hh,v 1.5 2001/12/07 11:49:09 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -64,7 +64,7 @@ class Em1DetectorConstruction : public G4VUserDetectorConstruction
const
G4VPhysicalVolume* GetWorld() {return pBox;};
G4double GeSize() {return BoxSize;};
G4double GetSize() {return BoxSize;};
G4Material* GetMaterial() {return aMaterial;};
void PrintParameters();
@@ -22,7 +22,7 @@
//
//
// $Id: Em1DetectorMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em1EventAction.hh,v 1.5 2001/11/29 11:28:07 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em1EventActionMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PhysicsList.hh,v 1.4 2001/10/26 12:51:23 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PhysicsList.hh,v 1.5 2002/03/08 13:43:29 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -59,7 +59,6 @@ class Em1PhysicsList: public G4VUserPhysicsList
void SetGammaCut(G4double);
void SetElectronCut(G4double);
void SetProtonCut(G4double);
void SetCutsByEnergy(G4double);
void GetRange(G4double);
protected:
@@ -75,6 +74,7 @@ class Em1PhysicsList: public G4VUserPhysicsList
G4double cutForGamma;
G4double cutForElectron;
G4double cutForProton;
G4double currentDefaultCut;
};
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PhysicsListMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PhysicsListMessenger.hh,v 1.5 2002/03/08 13:43:29 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -54,7 +54,6 @@ class Em1PhysicsListMessenger: public G4UImessenger
G4UIcmdWithADoubleAndUnit* cutECmd;
G4UIcmdWithADoubleAndUnit* cutPCmd;
G4UIcmdWithADoubleAndUnit* rCmd;
G4UIcmdWithADoubleAndUnit* eCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PrimaryGeneratorAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PrimaryGeneratorAction.hh,v 1.5 2001/12/07 11:49:09 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -37,20 +37,27 @@
class G4ParticleGun;
class G4Event;
class Em1DetectorConstruction;
class Em1PrimaryGeneratorMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class Em1PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
Em1PrimaryGeneratorAction();
Em1PrimaryGeneratorAction(Em1DetectorConstruction*);
~Em1PrimaryGeneratorAction();
public:
void SetDefaultKinematic(G4int);
void SetRndmBeam(G4double val) {rndmBeam = val;}
void GeneratePrimaries(G4Event*);
private:
G4ParticleGun* particleGun; //pointer a to G4 service class
G4ParticleGun* particleGun;
Em1DetectorConstruction* Em1Detector;
G4double rndmBeam;
Em1PrimaryGeneratorMessenger* gunMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: Em1PrimaryGeneratorMessenger.hh,v 1.1 2001/12/07 11:49:09 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef Em1PrimaryGeneratorMessenger_h
#define Em1PrimaryGeneratorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class Em1PrimaryGeneratorAction;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADouble;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class Em1PrimaryGeneratorMessenger: public G4UImessenger
{
public:
Em1PrimaryGeneratorMessenger(Em1PrimaryGeneratorAction*);
~Em1PrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
Em1PrimaryGeneratorAction* Em1Action;
G4UIcmdWithAnInteger* DefaultCmd;
G4UIcmdWithADouble* RndmCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1RunAction.hh,v 1.8 2001/11/29 11:28:07 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1RunAction.hh,v 1.9 2002/05/31 17:10:35 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -41,8 +41,8 @@
class G4Run;
#ifndef G4NOHIST
class HepTupleManager;
class HepHistogram;
class ITree;
class IHistogram1D;
#endif
class Em1RunAction : public G4UserRunAction
@@ -62,7 +62,7 @@ class Em1RunAction : public G4UserRunAction
void CountProcesses(G4String);
#ifndef G4NOHIST
HepHistogram* GetHisto(G4int id) {return histo[id];}
IHistogram1D* GetHisto(G4int id) {return histo[id];}
#endif
private:
@@ -75,8 +75,8 @@ class Em1RunAction : public G4UserRunAction
ProcessesCount* ProcCounter;
#ifndef G4NOHIST
HepTupleManager* hbookManager;
HepHistogram* histo[3];
ITree* tree;
IHistogram1D* histo[3];
#endif
};
@@ -22,7 +22,7 @@
//
//
// $Id: Em1SteppingAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em1SteppingVerbose.hh,v 1.7 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
// This class manages the verbose outputs in G4SteppingManager.
// It inherits from G4SteppingVerbose.
@@ -22,7 +22,7 @@
//
//
// $Id: Em1TrackingAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -22,7 +22,7 @@
//
//
// $Id: Em1VisManager.hh,v 1.4 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: ProcessesCount.hh,v 1.7 2001/10/26 12:51:24 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,28 @@
# $Id: phot.mac,v 1.1 2002/02/06 13:57:58 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
#
# PhotoElectricEffect; Gamma 1 Mev
#
/control/verbose 2
#
/run/initialize
#
/calor/setMat Germanium
/calor/setSize 1 cm
/calor/update
#
/gun/setDefault 1
#
/run/verbose 2
#
/gun/particle gamma
/gun/energy 1 MeV
/gun/rndm 0.8
#
/tracking/verbose 1
#
#/run/particle/applyCuts
#
#/run/beamOn 100000
@@ -1,4 +1,4 @@
# $Id: run01.mac,v 1.3 2001/10/31 15:36:43 maire Exp $
# $Id: run01.mac,v 1.4 2002/03/08 13:43:27 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 95 cm
/run/particle/setGCut 95 cm
/run/particle/setECut 95 cm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run02.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run02.mac,v 1.4 2002/03/08 13:43:27 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 95 cm
/run/particle/setGCut 95 cm
/run/particle/setECut 95 cm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run03.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run03.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 95 cm
/run/particle/setGCut 95 cm
/run/particle/setECut 95 cm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run04.mac,v 1.4 2001/10/31 15:36:44 maire Exp $
# $Id: run04.mac,v 1.5 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 100. micrometer
/run/particle/setGCut 95 cm
/run/particle/setECut 100 micrometer
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run05.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run05.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 2.2 mm
/calor/cutE 95 cm
/run/particle/setGCut 2.2 mm
/run/particle/setECut 95 cm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run06.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run06.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 95 cm
/run/particle/setGCut 95 cm
/run/particle/setECut 95 cm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run07.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run07.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 30 mm
/run/particle/setGCut 95 cm
/run/particle/setECut 30 mm
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run08.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run08.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 2.2 mm
/calor/cutE 6.05 micrometer
/run/particle/setGCut 2.2 mm
/run/particle/setECut 6.05 micrometer
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run09.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run09.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 2.2 mm
/calor/cutE 6.05 micrometer
/run/particle/setGCut 2.2 mm
/run/particle/setECut 6.05 micrometer
#
/run/initialize
#
@@ -1,4 +1,4 @@
# $Id: run11.mac,v 1.3 2001/10/31 15:36:44 maire Exp $
# $Id: run11.mac,v 1.4 2002/03/08 13:43:28 maire Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -7,8 +7,8 @@
#
/control/verbose 2
#
/calor/cutG 95 cm
/calor/cutE 17 cm
/run/particle/setGCut 95 cm
/run/particle/setECut 17 cm
#
/run/initialize
#
@@ -22,8 +22,8 @@
//
//
// $Id: Em1DetectorConstruction.cc,v 1.7 2001/11/29 11:28:07 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1DetectorConstruction.cc,v 1.9 2002/05/31 17:10:35 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -129,17 +129,25 @@ density = 2.330*g/cm3;
a = 28.09*g/mole;
G4Material* Si = new G4Material(name="Silicon" , z=14., a, density);
density = 5.323*g/cm3;
a = 72.61*g/mole;
G4Material* Ge = new G4Material(name="Germanium" , z=32., a, density);
density = 7.870*g/cm3;
a = 55.85*g/mole;
G4Material* Fe = new G4Material(name="Iron" , z=26., a, density);
density = 19.30*g/cm3;
a = 183.85*g/mole;
G4Material* W = new G4Material(name="Tungsten" , z=74., a, density);
density = 11.35*g/cm3;
a = 207.19*g/mole;
G4Material* Pb = new G4Material(name="Lead" , z=82., a, density);
density = 18.95*g/cm3;
a = 238.03*g/mole;
G4Material* U = new G4Material(name="Uranium" , z=82., a, density);
G4Material* U = new G4Material(name="Uranium" , z=92., a, density);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
@@ -22,7 +22,7 @@
//
//
// $Id: Em1DetectorMessenger.cc,v 1.4 2001/10/26 12:51:25 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em1EventAction.cc,v 1.6 2001/11/29 11:28:07 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em1EventActionMessenger.cc,v 1.4 2001/10/26 12:51:25 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PhysicsList.cc,v 1.5 2001/10/26 12:51:25 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PhysicsList.cc,v 1.6 2002/03/08 13:43:29 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -54,13 +54,14 @@ Em1PhysicsList::Em1PhysicsList(Em1DetectorConstruction* p)
{
pDet = p;
defaultCutValue = 1.*mm;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForProton = defaultCutValue;
SetVerboseLevel(1);
currentDefaultCut = defaultCutValue = 1.*mm;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForProton = defaultCutValue;
pMes = new Em1PhysicsListMessenger(this);
SetVerboseLevel(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -241,9 +242,18 @@ void Em1PhysicsList::ConstructGeneral()
void Em1PhysicsList::SetCuts()
{
// reactualise cutValues
if (currentDefaultCut != defaultCutValue)
{
if(cutForGamma == currentDefaultCut) cutForGamma = defaultCutValue;
if(cutForElectron == currentDefaultCut) cutForElectron = defaultCutValue;
if(cutForProton == currentDefaultCut) cutForProton = defaultCutValue;
currentDefaultCut = defaultCutValue;
}
if (verboseLevel >0){
G4cout << "Em1PhysicsList::SetCuts:";
G4cout << "CutLength : " << defaultCutValue/mm << " (mm)" << G4endl;
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
}
// set cut values for gamma at first and for e- second and next for e+,
@@ -288,39 +298,6 @@ void Em1PhysicsList::SetProtonCut(G4double val)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em1PhysicsList::SetCutsByEnergy(G4double val)
{
G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
G4Material* currMat = pDet->GetMaterial();
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
G4ParticleDefinition* part;
G4double cut;
part = theParticleTable->FindParticle("e-");
cut = G4EnergyLossTables::GetRange(part,val,currMat);
SetCutValue(cut, "e-");
part = theParticleTable->FindParticle("e+");
cut = G4EnergyLossTables::GetRange(part,val,currMat);
SetCutValue(cut, "e+");
// set cut values for proton and anti_proton before all other hadrons
// because some processes for hadrons need cut values for proton/anti_proton
part = theParticleTable->FindParticle("proton");
cut = G4EnergyLossTables::GetRange(part,val,currMat);
SetCutValue(cut, "proton");
part = theParticleTable->FindParticle("anti_proton");
cut = G4EnergyLossTables::GetRange(part,val,currMat);
SetCutValue(cut, "anti_proton");
SetCutValueForOthers(cut);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em1PhysicsList::GetRange(G4double val)
{
G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
@@ -330,10 +307,10 @@ void Em1PhysicsList::GetRange(G4double val)
G4double cut;
part = theParticleTable->FindParticle("e-");
cut = G4EnergyLossTables::GetRange(part,val,currMat);
G4cout << "material : " << currMat->GetName() << G4endl;
G4cout << "particle : " << part->GetParticleName() << G4endl;
G4cout << "energy : " << val / keV << " (keV)" << G4endl;
G4cout << "range : " << cut / mm << " (mm)" << G4endl;
G4cout << "material : " << currMat->GetName() << G4endl;
G4cout << "particle : " << part->GetParticleName() << G4endl;
G4cout << "energy : " << G4BestUnit(val,"Energy") << G4endl;
G4cout << "range : " << G4BestUnit(cut,"Length") << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PhysicsListMessenger.cc,v 1.5 2001/10/31 15:36:45 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PhysicsListMessenger.cc,v 1.6 2002/03/08 13:43:30 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -40,36 +40,29 @@
Em1PhysicsListMessenger::Em1PhysicsListMessenger(Em1PhysicsList* EvAct)
:physList(EvAct)
{
cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this);
cutGCmd->SetGuidance("Set cut values by RANGE for Gamma.");
cutGCmd->SetParameterName("range",false);
cutGCmd->SetRange("range>0.");
cutGCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setGCut",this);
cutGCmd->SetGuidance("Set gamma cut.");
cutGCmd->SetParameterName("Gcut",false);
cutGCmd->SetRange("Gcut>0.");
cutGCmd->SetUnitCategory("Length");
cutGCmd->AvailableForStates(PreInit,Idle);
cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this);
cutECmd->SetGuidance("Set cut values by RANGE for e- e+.");
cutECmd->SetParameterName("range",false);
cutECmd->SetRange("range>0.");
cutECmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setECut",this);
cutECmd->SetGuidance("Set electron cut");
cutECmd->SetParameterName("Ecut",false);
cutECmd->SetRange("Ecut>0.");
cutECmd->SetUnitCategory("Length");
cutECmd->AvailableForStates(PreInit,Idle);
cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this);
cutPCmd->SetGuidance("Set cut values by RANGE for proton and others.");
cutPCmd->SetParameterName("range",false);
cutPCmd->SetRange("range>0.");
cutPCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setPCut",this);
cutPCmd->SetGuidance("Set proton cut.");
cutPCmd->SetParameterName("Pcut",false);
cutPCmd->SetRange("Pcut>0.");
cutPCmd->SetUnitCategory("Length");
cutPCmd->AvailableForStates(PreInit,Idle);
eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this);
eCmd->SetGuidance("Set cut values by ENERGY for charged particles.");
eCmd->SetParameterName("energy",false);
eCmd->SetRange("energy>0.");
eCmd->SetUnitCategory("Energy");
eCmd->AvailableForStates(Idle);
rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this);
rCmd->SetGuidance("Display the RANGE of Electron for the current material.");
rCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/getRange",this);
rCmd->SetGuidance("get the electron cut for the current material.");
rCmd->SetParameterName("energy",false);
rCmd->SetRange("energy>0.");
rCmd->SetUnitCategory("Energy");
@@ -84,7 +77,6 @@ Em1PhysicsListMessenger::~Em1PhysicsListMessenger()
delete cutECmd;
delete cutPCmd;
delete rCmd;
delete eCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -95,11 +87,9 @@ void Em1PhysicsListMessenger::SetNewValue(G4UIcommand* command,
if(command == cutGCmd)
{physList->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));}
if(command == cutECmd)
{physList->SetElectronCut(eCmd->GetNewDoubleValue(newValue));}
{physList->SetElectronCut(cutECmd->GetNewDoubleValue(newValue));}
if(command == cutPCmd)
{physList->SetProtonCut(eCmd->GetNewDoubleValue(newValue));}
if(command == eCmd)
{physList->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));}
{physList->SetProtonCut(cutPCmd->GetNewDoubleValue(newValue));}
if(command == rCmd)
{physList->GetRange(rCmd->GetNewDoubleValue(newValue));}
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1PrimaryGeneratorAction.cc,v 1.4 2001/10/26 12:51:25 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1PrimaryGeneratorAction.cc,v 1.5 2001/12/07 11:49:09 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -31,26 +31,27 @@
#include "Em1PrimaryGeneratorAction.hh"
#include "Em1DetectorConstruction.hh"
#include "Em1PrimaryGeneratorMessenger.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "Randomize.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction()
Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction(
Em1DetectorConstruction* Em1DC)
:Em1Detector(Em1DC)
{
G4int n_particle = 1;
particleGun = new G4ParticleGun(n_particle);
// default particle kinematic
G4ParticleDefinition* particle
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
particleGun->SetParticleEnergy(100*MeV);
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,0.*cm));
particleGun = new G4ParticleGun(1);
SetDefaultKinematic(0);
rndmBeam = 0.;
//create a messenger for this class
gunMessenger = new Em1PrimaryGeneratorMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -58,13 +59,42 @@ Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction()
Em1PrimaryGeneratorAction::~Em1PrimaryGeneratorAction()
{
delete particleGun;
delete gunMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em1PrimaryGeneratorAction::SetDefaultKinematic(G4int front)
{
G4ParticleDefinition* particle
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
particleGun->SetParticleEnergy(100*MeV);
G4double position = 0.*cm;
if (front) position = -0.5*(Em1Detector->GetSize());
particleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em1PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
particleGun->GeneratePrimaryVertex(anEvent);
{
//this function is called at the begining of event
//
//randomize the beam, if requested.
if (rndmBeam > 0.)
{
G4ThreeVector oldPosition = particleGun->GetParticlePosition();
G4double rbeam = 0.5*(Em1Detector->GetSize())*rndmBeam;
G4double x0 = oldPosition.x();
G4double y0 = oldPosition.y() + (2*G4UniformRand()-1.)*rbeam;
G4double z0 = oldPosition.z() + (2*G4UniformRand()-1.)*rbeam;
particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
particleGun->GeneratePrimaryVertex(anEvent);
particleGun->SetParticlePosition(oldPosition);
}
else particleGun->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: Em1PrimaryGeneratorMessenger.cc,v 1.1 2001/12/07 11:49:10 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "Em1PrimaryGeneratorMessenger.hh"
#include "Em1PrimaryGeneratorAction.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADouble.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Em1PrimaryGeneratorMessenger::Em1PrimaryGeneratorMessenger(
Em1PrimaryGeneratorAction* Em1Gun)
:Em1Action(Em1Gun)
{
DefaultCmd = new G4UIcmdWithAnInteger("/gun/setDefault",this);
DefaultCmd->SetGuidance("set/reset kinematic defined in PrimaryGenerator");
DefaultCmd->SetGuidance("0=boxCenter, else=frontFace");
DefaultCmd->SetParameterName("position",true);
DefaultCmd->SetDefaultValue(0);
DefaultCmd->AvailableForStates(PreInit,Idle);
RndmCmd = new G4UIcmdWithADouble("/gun/rndm",this);
RndmCmd->SetGuidance("random lateral extension on the beam");
RndmCmd->SetGuidance("in fraction of 0.5*sizeYZ");
RndmCmd->SetParameterName("rBeam",false);
RndmCmd->SetRange("rBeam>=0.&&rBeam<=1.");
RndmCmd->AvailableForStates(Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Em1PrimaryGeneratorMessenger::~Em1PrimaryGeneratorMessenger()
{
delete DefaultCmd;
delete RndmCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em1PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if (command == DefaultCmd)
{Em1Action->SetDefaultKinematic(DefaultCmd->GetNewIntValue(newValue));}
if (command == RndmCmd)
{Em1Action->SetRndmBeam(RndmCmd->GetNewDoubleValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1RunAction.cc,v 1.13 2001/11/29 11:28:07 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1RunAction.cc,v 1.16 2002/06/03 13:49:28 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -43,18 +43,22 @@
#include "Randomize.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#include "AIDA/IAnalysisFactory.h"
#include "AIDA/ITreeFactory.h"
#include "AIDA/ITree.h"
#include "AIDA/IHistogramFactory.h"
#include "AIDA/IHistogram1D.h"
#include "AIDA/IAxis.h"
#include "AIDA/IAnnotation.h"
#include "AIDA/ITupleFactory.h"
#include "AIDA/ITuple.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Em1RunAction::Em1RunAction()
: ProcCounter(0)
{
#ifndef G4NOHIST
hbookManager = 0;
#endif
}
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -68,15 +72,30 @@ Em1RunAction::~Em1RunAction()
void Em1RunAction::bookHisto()
{
#ifndef G4NOHIST
hbookManager = new HBookFile("testem1.paw", 68);
// Creating the analysis factory
IAnalysisFactory* af = AIDA_createAnalysisFactory();
// Creating the tree factory
ITreeFactory* tf = af->createTreeFactory();
// Creating a tree mapped to an hbook file.
tree = tf->create("testem1.paw", false, false, "hbook");
// 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);
// Creating a histogram factory, whose histograms will be handled by the tree
IHistogramFactory* hf = af->createHistogramFactory(*tree);
// booking histograms
histo[0] = hf->create1D("1","track length (mm) of a charged particle",
100,0.,50*cm);
histo[1] = hf->create1D("2","Nb of steps per track (charged particle)",
100,0.,100.);
histo[2] = hf->create1D("3","step length (mm) charged particle",
100,0.,10*mm);
delete hf;
delete tf;
delete af;
#endif
}
@@ -85,10 +104,10 @@ void Em1RunAction::bookHisto()
void Em1RunAction::cleanHisto()
{
#ifndef G4NOHIST
// writing histogram file
hbookManager->write();
delete [] histo;
delete hbookManager;
tree->commit(); // Writing the histograms to the file
tree->close(); // and closing the tree (and the file)
delete tree;
#endif
}
@@ -136,24 +155,24 @@ void Em1RunAction::EndOfRunAction(const G4Run* aRun)
G4double dNbOfEvents = double(NbOfEvents);
G4long oldform = G4cout.setf(G4std::ios::fixed,G4std::ios::floatfield);
G4int oldprec = G4cout.precision(2);
G4int oldprec = G4cout.precision(4);
G4cout << "\n nb tracks/event"
<< " neutral: " << G4std::setw(7) << NbOfTraks0/dNbOfEvents
<< " charged: " << G4std::setw(7) << NbOfTraks1/dNbOfEvents
<< " neutral: " << G4std::setw(10) << NbOfTraks0/dNbOfEvents
<< " charged: " << G4std::setw(10) << NbOfTraks1/dNbOfEvents
<< "\n nb steps/event"
<< " neutral: " << G4std::setw(7) << NbOfSteps0/dNbOfEvents
<< " charged: " << G4std::setw(7) << NbOfSteps1/dNbOfEvents
<< " neutral: " << G4std::setw(10) << NbOfSteps0/dNbOfEvents
<< " charged: " << G4std::setw(10) << NbOfSteps1/dNbOfEvents
<< G4endl;
//frequency of processes call
G4cout << "\n nb of process calls per event: \n ";
for (size_t i=0; i< ProcCounter->size();i++)
G4cout << G4std::setw(9) << (*ProcCounter)[i]->GetName();
G4cout << G4std::setw(12) << (*ProcCounter)[i]->GetName();
G4cout << "\n ";
for (size_t j=0; j< ProcCounter->size();j++)
G4cout << G4std::setw(9) << ((*ProcCounter)[j]->GetCounter())
G4cout << G4std::setw(12) << ((*ProcCounter)[j]->GetCounter())
/dNbOfEvents;
G4cout << G4endl;
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em1SteppingAction.cc,v 1.7 2001/10/26 12:51:26 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1SteppingAction.cc,v 1.8 2002/05/31 17:10:35 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -36,7 +36,7 @@
#include "G4VProcess.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#include "AIDA/IHistogram1D.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -64,7 +64,7 @@ void Em1SteppingAction::UserSteppingAction(const G4Step* aStep)
G4double steplen = aStep->GetStepLength();
#ifndef G4NOHIST
if (charge != 0.) runAction->GetHisto(2)->accumulate(steplen);
if (charge != 0.) runAction->GetHisto(2)->fill(steplen);
#endif
}
@@ -22,7 +22,7 @@
//
//
// $Id: Em1SteppingVerbose.cc,v 1.8 2001/10/26 12:51:26 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -22,8 +22,8 @@
//
//
// $Id: Em1TrackingAction.cc,v 1.7 2001/10/26 12:51:26 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em1TrackingAction.cc,v 1.8 2002/05/31 17:10:35 maire Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -36,7 +36,7 @@
#include "G4Track.hh"
#ifndef G4NOHIST
#include "CLHEP/Hist/HBookFile.h"
#include "AIDA/IHistogram1D.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -59,8 +59,8 @@ void Em1TrackingAction::PostUserTrackingAction(const G4Track* aTrack)
{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);
runAction->GetHisto(0)->fill(Trleng);
runAction->GetHisto(1)->fill((float)nbSteps);
#endif
}
}
@@ -22,7 +22,7 @@
//
//
// $Id: Em1VisManager.cc,v 1.6 2001/11/15 13:09:44 johna Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
$Id: History,v 1.4 2001/11/27 17:01:17 gcosmo Exp $
$Id: History,v 1.5 2002/06/11 16:12:58 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,9 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
11 Jun. 2002 Vladimir Grichine (testem10-V04-00-00)
- new TestEm10.in and TestEm10.largr_N.in
27 Nov. 2001 Gabriele Cosmo (TestEm10-V03-02-01)
- Corrected README.
@@ -22,7 +22,7 @@
//
//
// $Id: TestEm10.cc,v 1.2 2001/07/11 09:57:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
@@ -5,38 +5,8 @@
/run/initialize
/run/particle/dumpCutValues
/gun/particle e-
/gun/energy 9000.0 MeV
# Test G4FoamXrayTRmodel
/XTRdetector/setModel 1
/gun/energy 9 GeV
/run/beamOn 1000
# Test G4FoamXTRdEdx
/XTRdetector/setModel 2
/run/beamOn 10
# Test G4GamDistrXrayTRmodel
/XTRdetector/setModel 3
/run/beamOn 10
# Test G4GamDistrXTRdEdx
/XTRdetector/setModel 4
/run/beamOn 10
# Test G4IrregularXrayTRmodel
/XTRdetector/setModel 5
/run/beamOn 10
# Test G4IrregularXTRdEdx
/XTRdetector/setModel 6
/run/beamOn 10
# Test G4PlateIrrGasXrayTRmodel
/XTRdetector/setModel 7
/run/beamOn 10
# Test G4PlateIrrGasXTRdEdx
/XTRdetector/setModel 8
/run/beamOn 10
# Test G4RegularXrayTRmodel
/XTRdetector/setModel 9
/run/beamOn 10
# Test G4RegularXTRdEdx
/XTRdetector/setModel 10
/run/beamOn 10
@@ -1,42 +1,13 @@
#
# Macro file 'TestEm10.large_N.in' for testing "TestEm10"
# Macro file 'TestEm10.in' for testing "TestEm10"
#
#
/run/initialize
/run/particle/dumpCutValues
/gun/particle e-
/gun/energy 9000.0 MeV
# Test G4FoamXrayTRmodel
/XTRdetector/setModel 1
/run/beamOn 1000
# Test G4FoamXTRdEdx
/XTRdetector/setModel 2
/run/beamOn 1000
# Test G4GamDistrXrayTRmodel
/XTRdetector/setModel 3
/run/beamOn 1000
# Test G4GamDistrXTRdEdx
/XTRdetector/setModel 4
/run/beamOn 1000
# Test G4IrregularXrayTRmodel
/XTRdetector/setModel 5
/run/beamOn 1000
# Test G4IrregularXTRdEdx
/XTRdetector/setModel 6
/run/beamOn 1000
# Test G4PlateIrrGasXrayTRmodel
/XTRdetector/setModel 7
/run/beamOn 1000
# Test G4PlateIrrGasXTRdEdx
/XTRdetector/setModel 8
/run/beamOn 1000
# Test G4RegularXrayTRmodel
/XTRdetector/setModel 9
/run/beamOn 1000
# Test G4RegularXTRdEdx
/XTRdetector/setModel 10
/run/beamOn 1000
/gun/energy 9 GeV
/run/beamOn 10000
@@ -1,5 +1,5 @@
**********************************************
Geant4 version $Name: geant4-04-00 $
Geant4 version $Name: geant4-04-01 $
(29-Jun-2001)
Copyright : Geant4 Collaboration
**********************************************
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
h/file 1 g4.p11
h/pl 1
fort/file 66 el.ps
meta 66 -111
h/pl 1
close 66
q
@@ -22,7 +22,7 @@
//
//
// $Id: Em10CalorHit.hh,v 1.2 2001/07/11 09:57:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10CalorimeterSD.hh,v 1.2 2001/07/11 09:57:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em10DetectorConstruction.hh,v 1.4 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em10DetectorConstruction.hh,v 1.5 2002/02/05 11:06:37 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -65,7 +65,9 @@ class Em10DetectorConstruction : public G4VUserDetectorConstruction
void SetGasGapThickness(G4double);
void SetFoilNumber (G4int i){fFoilNumber=i;};
void SetFoilNumber (G4int i) {fFoilNumber = i; };
void SetAlphaPlate (G4double val){fAlphaPlate = val;};
void SetAlphaGas (G4double val){fAlphaGas = val;};
void SetWorldMaterial(G4String);
void SetWorldSizeZ(G4double);
@@ -96,7 +98,14 @@ class Em10DetectorConstruction : public G4VUserDetectorConstruction
const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;};
const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;};
G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;};
G4LogicalVolume* GetLogicalRadiator() {return logicRadiator;};
G4double GetFoilThick() {return fRadThickness;};
G4double GetGasThick() {return fGasGap;};
G4int GetFoilNumber() {return fFoilNumber;};
G4Material* GetFoilMaterial() {return fFoilMat;};
G4Material* GetGasMaterial() {return fGasMat;};
private:
G4bool worldchanged;
@@ -113,6 +122,9 @@ class Em10DetectorConstruction : public G4VUserDetectorConstruction
G4Material* fGapMat ;
G4double fGapThick ;
G4double fAlphaPlate ;
G4double fAlphaGas ;
G4double zAbsorber ;
G4double zstartAbs , zendAbs ;
@@ -139,38 +151,41 @@ class Em10DetectorConstruction : public G4VUserDetectorConstruction
G4LogicalVolume* logicRadiator;
G4VPhysicalVolume* physiRadiator;
G4Material* fRadiatorMat; //pointer to the TR radiator material
G4Material* fRadiatorMat; // pointer to the mixed TR radiator material
G4Material* fFoilMat; // pointer to the TR foil radiator material
G4Material* fGasMat; // pointer to the TR gas radiator material
G4double fRadThickness ;
G4double fGasGap ;
G4double fRadThickness ;
G4double fGasGap ;
G4double foilGasRatio ;
G4int fFoilNumber ;
G4int fModelNumber ; // selection of parametrisation model1-10
G4int fFoilNumber ;
G4int fModelNumber ; // selection of parametrisation model1-10
G4double fDetThickness ;
G4double fDetLength ;
G4double fDetGap ;
G4double fDetThickness ;
G4double fDetLength ;
G4double fDetGap ;
G4double fStartR ;
G4double fStartZ ;
G4double fStartR ;
G4double fStartZ ;
G4int fModuleNumber ; // the number of Rad-Det modules
G4int fModuleNumber ; // the number of Rad-Det modules
G4Box* solidAbsorber; //pointer to the solid Absorber
G4LogicalVolume* logicAbsorber; //pointer to the logical Absorber
G4VPhysicalVolume* physiAbsorber; //pointer to the physical Absorber
G4Box* solidAbsorber; //pointer to the solid Absorber
G4LogicalVolume* logicAbsorber; //pointer to the logical Absorber
G4VPhysicalVolume* physiAbsorber; //pointer to the physical Absorber
G4UniformMagField* magField; //pointer to the magnetic field
G4UniformMagField* magField; //pointer to the magnetic field
Em10DetectorMessenger* detectorMessenger; //pointer to the Messenger
Em10CalorimeterSD* calorimeterSD; //pointer to the sensitive detector
G4VXrayTRmodel* fXTRModel ;
Em10DetectorMessenger* detectorMessenger; //pointer to the Messenger
Em10CalorimeterSD* calorimeterSD; //pointer to the sensitive detector
G4VXrayTRmodel* fXTRModel ;
private:
private:
void DefineMaterials();
void ComputeCalorParameters();
G4VPhysicalVolume* ConstructCalorimeter();
void DefineMaterials();
void ComputeCalorParameters();
G4VPhysicalVolume* ConstructCalorimeter();
};
////////////////////////////////////////////////////////////////////////
@@ -22,7 +22,7 @@
//
//
// $Id: Em10DetectorMessenger.hh,v 1.3 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10EventAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10EventActionMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PhysicsList.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
#ifndef Em10PhysicsList_h
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PhysicsListMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10RunAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -23,7 +23,7 @@
//
// $Id: Em10RunMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10StepCut.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10SteppingAction.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10SteppingMessenger.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -22,7 +22,7 @@
//
//
// $Id: Em10SteppingVerbose.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
//---------------------------------------------------------------
@@ -22,7 +22,7 @@
//
//
// $Id: Em10VisManager.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: TRTDetectorConstruction.hh,v 1.2 2001/07/11 09:57:22 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: TRTMaterials.hh,v 1.2 2001/07/11 09:57:22 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -0,0 +1,7 @@
h/file 1 g4.p11
h/pl 1
fort/file 66 dEdx.eps
meta 66 -113
h/pl 1
close 66
q
@@ -13,24 +13,24 @@
# Xe55He15CH4, Xe10CH4, Xe20CH4, Xe5CH4, Xe20CO2, Kr20CO2
# Kr7CH4, Ar7CH4, XeArCH4
#
/XTRdetector/setAbsMat Xe20CO2
/XTRdetector/setAbsThick 3.0 mm
/XTRdetector/setWorldZ 4000.0 mm
#/XTRdetector/setAbsMat Xe10CH4
#/XTRdetector/setAbsThick 30.0 mm
#/XTRdetector/setWorldZ 4000.0 mm
#
# Parameters of Radiator (default mm)
# TRT_CH2, Radiator, CarbonFiber, Li, Be, Mylar, Kapton ?, CH2
# Air, CO2, He, Ne, Kr, Ar, Xe,
#
/XTRdetector/setRadMat CH2
/XTRdetector/setWorldMat Air
/XTRdetector/setRadThick 0.02 mm
/XTRdetector/setGasGapThick 0.2 mm
/XTRdetector/setFoilNum 200
#/XTRdetector/setRadMat Li
#/XTRdetector/setWorldMat He
#/XTRdetector/setRadThick 0.04 mm
#/XTRdetector/setGasGapThick 0.126 mm
#/XTRdetector/setFoilNum 300
#
# Selection of XTR parametrisation model: 1-10
# TRmodel/XTRdEdx: Foam 1/2, GamDistr 3/4, Irr 5/6, Plate 7/8, Reg 9/10
# TRmodel/XTRdEdx: Foam 1/2, GamDistr 3/4, Irr 5/6, Plate 7/8, Reg 9/10, no model 0
#
/XTRdetector/setModel 10
#/XTRdetector/setModel 0
#
# Update geometry after changing its parametrs
#
@@ -39,9 +39,9 @@
# PLOT: energy deposit distribution in absorber (g4.11)
#
/plots/sethistName g4.p11
/plots/setnbinEn 40
/plots/setnbinEn 73
/plots/setEnlow 0.0 MeV
/plots/setEnhigh 0.02 MeV
/plots/setEnhigh 0.011 MeV
#
#
/run/initialize
@@ -50,13 +50,15 @@
# Particle and its energy
#
/gun/particle e-
/gun/energy 3000.0 MeV
#
/gun/energy 40000.0 MeV
#/gun/particle proton
#/gun/energy 10000.0 GeV
#
#/tracking/verbose 2
#/tracking/verbose 6
#
/event/printModulo 100
/run/beamOn 1000
/event/printModulo 500
/run/beamOn 5000
#
#
@@ -22,7 +22,7 @@
//
//
// $Id: Em10CalorHit.cc,v 1.2 2001/07/11 09:57:23 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10CalorimeterSD.cc,v 1.2 2001/07/11 09:57:23 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em10DetectorConstruction.cc,v 1.7 2001/11/21 18:48:56 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em10DetectorConstruction.cc,v 1.8 2002/02/05 11:06:38 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -73,16 +73,27 @@ Em10DetectorConstruction::Em10DetectorConstruction()
{
// default parameter values of the calorimeter
WorldSizeZ = 80.*cm;
G4double inch = 2.54*cm ;
G4double mil = inch/1000.0 ;
WorldSizeZ = 200.*cm;
WorldSizeR = 20.*cm;
// Radiator and detector parameters
fRadThickness = 40.0*micrometer ; // 25*micrometer ;
fGasGap = 0.126*mm ; // 1500*micrometer ;
fFoilNumber = 300 ; // 188 ;
AbsorberThickness = 3.0*cm ; // 40.0*mm ;
fRadThickness = 0.0127*mm ; // 25*micrometer ;
fGasGap = 0.762*mm ; // 1500*micrometer ;
foilGasRatio = fRadThickness/(fRadThickness+fGasGap) ;
fFoilNumber = 100 ; // 188 ;
fAlphaPlate = 160.0 ;
fAlphaGas = 160.0 ;
fModelNumber = 0 ;
AbsorberThickness = 15.0*mm ; // 40.0*mm ;
AbsorberRadius = 10.*cm;
zAbsorber = 36.*cm ;
@@ -94,10 +105,11 @@ Em10DetectorConstruction::Em10DetectorConstruction()
fDetThickness = 40.0*mm ;
fDetLength = 200.0*cm ;
fDetGap = 1.0*mm ;
fDetGap = 0.01*mm ;
fStartR = 40.0*cm ;
fStartZ = 50.0*mm ;
fStartR = 40*cm ;
fStartZ = 100.0*mm ;
fModuleNumber = 1 ;
@@ -134,10 +146,10 @@ void Em10DetectorConstruction::DefineMaterials()
{
//This function illustrates the possible ways to define materials
G4String name, symbol ; //a =mass of a mole;
G4double a, z, density ; //z =mean number of protons;
//G4int iz, n, nel ; //iz=number of protons in an isotope;
//n =number of nucleons in an isotope;
G4String name, symbol ; //a =mass of a mole;
G4double a, z ; //z =mean number of protons;
G4double density, foilDensity, gasDensity, totDensity ;
G4double fractionFoil, fractionGas ;
G4int nel ;
//G4int ncomponents, natoms;
@@ -241,8 +253,8 @@ void Em10DetectorConstruction::DefineMaterials()
Kapton->AddElement(elH,4);
// Polypropelene
G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2);
G4Material* CH2 = new G4Material ("CH2" , 0.91*g/cm3, 2);
CH2->AddElement(elH,2);
CH2->AddElement(elC,1);
@@ -280,10 +292,10 @@ void Em10DetectorConstruction::DefineMaterials()
a = 131.29*g/mole ;
G4Material* Xe = new G4Material(name="Xenon",z=54., a, density );
/////////////////////////////////////////////////////////////////////////////
//
// Hydrocarbones, metane and others
/////////////////////////////////////////////////////////////////////////////
//
// Hydrocarbones, metane and others
// Metane, STP
density = 0.7174*mg/cm3 ;
@@ -304,13 +316,14 @@ void Em10DetectorConstruction::DefineMaterials()
G4Material* isobutane = new G4Material(name="isoC4H10",density,nel=2) ;
isobutane->AddElement(elC,4) ;
isobutane->AddElement(elH,10) ;
///////////////////////////////////////////////////////////////////////////
//
// Molecular gases
// Carbon dioxide
///////////////////////////////////////////////////////////////////////////
//
// Molecular gases
// Carbon dioxide, STP
density = 1.977*mg/cm3;
G4Material* CO2 = new G4Material(name="CO2", density, nel=2,
kStateGas,273.15*kelvin,1.*atmosphere);
@@ -415,21 +428,64 @@ void Em10DetectorConstruction::DefineMaterials()
ncomponents=2);
Xe20CH4->AddMaterial( Xe, fractionmass = 0.97 ) ;
Xe20CH4->AddMaterial( metane, fractionmass = 0.03 ) ;
// 93% Ar + 7% CH4, STP ; NIM 107 (1973) 413-422
density = 1.709*mg/cm3 ;
G4Material* Ar7CH4 = new G4Material(name="Ar7CH4" , density,
ncomponents=2);
Ar7CH4->AddMaterial( Argon, fractionmass = 0.971 ) ;
Ar7CH4->AddMaterial( metane, fractionmass = 0.029 ) ;
// 93% Kr + 7% CH4, STP ; NIM 107 (1973) 413-422
density = 3.491*mg/cm3 ;
G4Material* Kr7CH4 = new G4Material(name="Kr7CH4" , density,
ncomponents=2);
Kr7CH4->AddMaterial( Kr, fractionmass = 0.986 ) ;
Kr7CH4->AddMaterial( metane, fractionmass = 0.014 ) ;
// 0.5*(95% Xe + 5% CH4)+0.5*(93% Ar + 7% CH4), STP ; NIM A214 (1983) 261-268
density = 3.655*mg/cm3 ;
G4Material* XeArCH4 = new G4Material(name="XeArCH4" , density,
ncomponents=2);
XeArCH4->AddMaterial( Xe5CH4, fractionmass = 0.766 ) ;
XeArCH4->AddMaterial( Ar7CH4, fractionmass = 0.234 ) ;
// Preparation of mixed radiator material
foilDensity = 1.39*g/cm3; // Mylar 0.534*g/cm3; //Li 0.91*g/cm3 ;// CH2
gasDensity = 1.2928*mg/cm3 ; // Air 0.178*mg/cm3 ; // He 1.977*mg/cm3; // CO2
totDensity = foilDensity*foilGasRatio + gasDensity*(1.0-foilGasRatio) ;
fractionFoil = foilDensity*foilGasRatio/totDensity ;
fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity ;
G4Material* radiatorMat = new G4Material(name="radiatorMat" , totDensity,
ncomponents=2);
radiatorMat->AddMaterial( Mylar, fractionFoil ) ;
radiatorMat->AddMaterial( Air, fractionGas ) ;
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
// default materials of the calorimeter and TR radiator
fRadiatorMat = Li ; // CH2 Mylar ;
fRadiatorMat = radiatorMat ; // CH2 Mylar ;
fFoilMat = Mylar ; // Li ; // CH2 ;
fGasMat = Air ; // He ;// CO2 ;
fWindowMat = Mylar ;
fElectrodeMat = Al ;
AbsorberMaterial = Xe10CH4 ;
AbsorberMaterial = Ar7CH4; // Xe10CH4; // Xe55He15CH4;
fGapMat = Xe10CH4 ;
WorldMaterial = He ;
WorldMaterial = Air ; // CO2 ;
}
/////////////////////////////////////////////////////////////////////////
@@ -471,12 +527,13 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
// TR radiator envelope
G4double radThick = fFoilNumber*(fRadThickness + fGasGap) + fDetGap ;
G4double radThick = fFoilNumber*(fRadThickness + fGasGap) - fGasGap + fDetGap ;
G4double zRad = fStartZ + 0.5*radThick ;
G4cout<<"zRad = "<<zRad/mm<<" mm"<<G4endl ;
radThick *= 1.2 ;
// radThick *= 1.02 ;
G4cout<<"radThick = "<<radThick/mm<<" mm"<<G4endl ;
G4cout<<"fFoilNumber = "<<fFoilNumber<<G4endl ;
G4cout<<"fRadiatorMat = "<<fRadiatorMat->GetName()<<G4endl ;
@@ -491,7 +548,7 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
0.5*radThick ) ;
logicRadiator = new G4LogicalVolume(solidRadiator,
WorldMaterial,
fRadiatorMat,
"Radiator");
physiRadiator = new G4PVPlacement(0,
@@ -509,9 +566,9 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
fLogicRadSlice = new G4LogicalVolume(fSolidRadSlice,fRadiatorMat,
"RadSlice",0,0,0);
zModule = fStartZ + fRadThickness ;
zModule = fStartZ ; // ??? + fRadThickness ;
G4cout<<"zModule = "<<zModule/mm<<" mm"<<G4endl ;
/*
for(j=0;j<fFoilNumber;j++)
{
@@ -524,7 +581,7 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
physiRadiator,false,j);
}
G4cout<<G4endl ;
*/
G4Box* solidWindow = new G4Box("Window",AbsorberRadius,
AbsorberRadius,
fWindowThick/2. );
@@ -532,11 +589,11 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
G4LogicalVolume* logicWindow = new G4LogicalVolume(solidWindow,
fWindowMat, "Window");
G4double zWindow = fStartZ + radThick + fWindowThick/2. + 5.0*mm ;
G4double zWindow = fStartZ + radThick + fWindowThick/2. + 15.0*mm ;
// G4VPhysicalVolume* physiWindow = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,zWindow),
// "Window",logicWindow,physiWorld,false,0);
G4VPhysicalVolume* physiWindow = new G4PVPlacement(0,
G4ThreeVector(0.,0.,zWindow),
"Window",logicWindow,physiWorld,false,0);
G4Box* solidGap = new G4Box("Gap",AbsorberRadius,
AbsorberRadius,
@@ -567,7 +624,7 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
// Absorber
zAbsorber = zElectrode + fElectrodeThick/2. + AbsorberThickness/2. + 0.01*mm;
G4cout<<"zAbsorber = "<<zAbsorber/mm<<" mm"<<G4endl;
if (AbsorberThickness > 0.)
{
if(solidAbsorber) delete solidAbsorber ;
@@ -605,7 +662,7 @@ G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter()
// Parameterisation
ParametrisationModel();
// ParametrisationModel();
// always return physics world
@@ -620,6 +677,7 @@ void Em10DetectorConstruction::ParametrisationModel()
{
G4cout<<"Em10DetectorConstruction::ParametrisationModel() is called"<<G4endl;
G4cout<<"fModelNumber = "<<fModelNumber<<G4endl;
G4cout<<"start fXTRModel = "<<fXTRModel<<G4endl;
G4double alphaPlate = 160.0 ;
G4double alphaGas = 160.0 ;
@@ -631,6 +689,7 @@ void Em10DetectorConstruction::ParametrisationModel()
delete fXTRModel;
}
switch(fModelNumber)
{
case 1:
@@ -641,13 +700,13 @@ void Em10DetectorConstruction::ParametrisationModel()
break;
case 3:
fXTRModel = new G4GamDistrXrayTRmodel(logicRadiator,
fRadThickness,alphaPlate,
fGasGap,alphaGas);
fRadThickness,fAlphaPlate,
fGasGap,fAlphaGas);
break;
case 4:
fXTRModel = new G4GamDistrXTRdEdx(logicRadiator,
fRadThickness,alphaPlate,
fGasGap,alphaGas);
fRadThickness,fAlphaPlate,
fGasGap,fAlphaGas);
break;
case 5:
fXTRModel = new G4IrregularXrayTRmodel(logicRadiator,fRadThickness,fGasGap);
@@ -673,6 +732,7 @@ void Em10DetectorConstruction::ParametrisationModel()
G4cout<<"Warning: No parametrisation model was defined?"<<G4endl ;
break ;
}
G4cout<<"finish fXTRModel = "<<fXTRModel<<G4endl;
// fXTRModel->GetPlateZmuProduct() ;
// fXTRModel->GetGasZmuProduct() ;
@@ -22,7 +22,7 @@
//
//
// $Id: Em10DetectorMessenger.cc,v 1.5 2001/11/21 18:48:56 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10EventAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10EventActionMessenger.cc,v 1.2 2001/07/11 09:57:24 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em10PhysicsList.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em10PhysicsList.cc,v 1.4 2002/02/05 11:06:38 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
#include "G4Timer.hh"
@@ -153,7 +153,7 @@ void Em10PhysicsList::ConstructBarions()
void Em10PhysicsList::ConstructProcess()
{
AddTransportation();
AddParameterisation();
// AddParameterisation();
ConstructEM();
ConstructGeneral();
@@ -179,7 +179,9 @@ void Em10PhysicsList::ConstructProcess()
#include "G4hIonisation.hh"
#include "G4PAIonisation.hh"
#include "G4ForwardXrayTR.hh"
#include "G4RegularXTRadiator.hh"
#include "Em10StepCut.hh"
@@ -229,9 +231,19 @@ void Em10PhysicsList::ConstructEM()
pmanager->AddProcess(new G4IonisationByLogicalVolume(particleName,
pDet->GetLogicalAbsorber(),
"IonisationByLogVol"),-1,1,-1);
pmanager->AddContinuousProcess(
new G4RegularXTRadiator(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator"));
// ,-1,1,-1);
pmanager->AddProcess(theeminusBremsstrahlung,-1,-1,-1);
// pmanager->AddProcess(fPAIonisation,-1,2,2);
// pmanager->AddProcess(fForwardXrayTR,-1,-1,2);
@@ -303,7 +315,7 @@ void Em10PhysicsList::ConstructEM()
pmanager->AddProcess(new G4IonisationByLogicalVolume(particleName,
pDet->GetLogicalAbsorber(),
"IonisationByLogVolHadr"),-1,2,2);
"IonisationByLogVolHadr"),-1,2,-2);
// pmanager->AddProcess(thehMultipleScattering,-1,1,1);
// pmanager->AddProcess(thehIonisation,-1,2,2);
@@ -347,7 +359,7 @@ void Em10PhysicsList::ConstructGeneral()
}
/////////////////////////////////////////////////////////////////////////////
/*
void Em10PhysicsList::AddParameterisation()
{
G4FastSimulationManagerProcess* theFastSimulationManagerProcess =
@@ -365,7 +377,7 @@ void Em10PhysicsList::AddParameterisation()
pmanager->AddProcess(theFastSimulationManagerProcess, -1, 1, 1);
}
}
*/
/////////////////////////////////////////////////////////////////////////////
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PhysicsListMessenger.cc,v 1.2 2001/07/11 09:57:24 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em10PrimaryGeneratorAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em10PrimaryGeneratorAction.cc,v 1.4 2002/02/05 11:06:38 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -115,7 +115,8 @@ void Em10PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
y0 = r0*sin(phi0);
}
********************************************* */
particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
// particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
particleGun->SetParticlePosition(G4ThreeVector(0.,0.,0.));
particleGun->GeneratePrimaryVertex(anEvent);
}
@@ -22,7 +22,7 @@
//
//
// $Id: Em10PrimaryGeneratorMessenger.cc,v 1.2 2001/07/11 09:57:25 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10RunAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10RunMessenger.cc,v 1.2 2001/07/11 09:57:26 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10StepCut.cc,v 1.2 2001/07/11 09:57:26 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
#include "Em10StepCut.hh"
@@ -22,7 +22,7 @@
//
//
// $Id: Em10SteppingAction.cc,v 1.3 2001/11/21 11:57:15 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em10SteppingMessenger.cc,v 1.2 2001/07/11 09:57:27 gunter Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -21,87 +21,83 @@
// ********************************************************************
//
//
// $Id: Em10SteppingVerbose.cc,v 1.3 2001/11/21 11:57:15 mverderi Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: Em10SteppingVerbose.cc,v 1.4 2002/02/05 11:06:38 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
//---------------------------------------------------------------
//
// Em10SteppingVerbose.cc
//
// Description:
// Implementation of the Em10SteppingVerbose class
// Contact:
// Questions and comments to this code should be sent to
// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp)
// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp)
//
//---------------------------------------------------------------
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
#include "Em10SteppingVerbose.hh"
#include "G4SteppingManager.hh"
#include "G4SteppingManager.hh"
#include "G4UnitsTable.hh"
////////////////////////////////////////////////
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
Em10SteppingVerbose::Em10SteppingVerbose()
////////////////////////////////////////////////
{
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//////////////////////////////////////////////////
Em10SteppingVerbose::~Em10SteppingVerbose()
//////////////////////////////////////////////////
{
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
/////////////////////////////////////////
void Em10SteppingVerbose::StepInfo()
/////////////////////////////////////////
{
CopyState();
G4int prec = G4cout.precision(3);
G4int prec = G4cout.precision(8);
if( verboseLevel >= 1 ){
if( verboseLevel >= 4 ) VerboseTrack();
if( verboseLevel >= 3 ){
G4cout << G4endl;
G4cout << G4std::setw( 5) << "#Step#" << " "
<< G4std::setw( 6) << "X" << " "
<< G4std::setw( 6) << "Y" << " "
<< G4std::setw( 6) << "Z" << " "
<< G4std::setw( 9) << "KineE" << " "
<< G4std::setw( 9) << "dEStep" << " "
<< G4std::setw(10) << "X" << " "
<< G4std::setw(10) << "Y" << " "
<< G4std::setw(10) << "Z" << " "
<< G4std::setw(10) << "KineE" << " "
<< G4std::setw(10) << "dEStep" << " "
<< G4std::setw(10) << "StepLeng"
<< G4std::setw(10) << "TrakLeng"
<< G4std::setw(10) << "NextVolu"
<< G4std::setw(10) << "Process" << G4endl;
<< G4std::setw(10) << "Process"
<< G4std::setw(10) << "Dir_x" << " "
<< G4std::setw(10) << "Dir_y" << " "
<< G4std::setw(10) << "Dir_z" << " "
<< G4endl;
}
G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
<< G4std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< G4std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< G4std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< G4std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< G4std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< G4std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< G4std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
// 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 << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().x(),"Length")
<< G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length")
<< G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length");
G4cout << G4endl;
if( verboseLevel == 2 ){
@@ -121,6 +117,7 @@ void Em10SteppingVerbose::StepInfo()
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< G4std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
@@ -146,9 +143,9 @@ void Em10SteppingVerbose::StepInfo()
G4cout.precision(prec);
}
////////////////////////////////////////////////
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
void Em10SteppingVerbose::TrackingStarted()
////////////////////////////////////////////////
{
CopyState();
@@ -163,7 +160,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() << " "
@@ -176,11 +173,22 @@ 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.....
@@ -22,7 +22,7 @@
//
//
// $Id: Em10VisManager.cc,v 1.3 2001/12/12 15:22:30 johna Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.6 2001/10/25 15:12:05 maire Exp $
# $Id: GNUmakefile,v 1.7 2002/05/31 16:06:53 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -20,8 +20,9 @@ G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
# for the aida-config command see the README file
CPPFLAGS += `aida-config --useHBook --include`
LDFLAGS += `aida-config --useHBook --lib`
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.17 2001/12/11 17:42:24 gcosmo Exp $
$Id: History,v 1.19 2002/06/05 18:06:28 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,12 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
05-06-02 mma (testem2-V04-00-01)
-do not delete histos in runAction destructor
31-05-02 mma (testem2-V04-00-00)
-old histograming package clhep/hist replaced by AIDA 2.2/anaphe. See README
11-12-01 gcosmo (testem2-V03-02-04)
- SteppingAction: added check on history depth also for rings!
@@ -1,4 +1,4 @@
$Id: README,v 1.5 2001/10/25 15:12:05 maire Exp $
$Id: README,v 1.6 2002/05/31 16:06:53 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -107,8 +107,24 @@ $Id: README,v 1.5 2001/10/25 15:12:05 maire Exp $
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.
Note that histograms are disabled via the flag G4NOHIST in the GNUmakefile.
7- Using the Anaphe implementation of the AIDA 2.2 histograms:
--------------------------------------------------------------
In order to use the Anaphe implementation of the AIDA 2.2 interfaces,
prepare some environment variables by source-ing one of the following
startup scripts (depending on your compiler version):
# gcc-2.95.2
source $LHCXXTOP/share/LHCXX/4.0.1/install/sharedstart.sh or .csh
# egcs_1.1.2 (aka gcc 2.91.66)
source $LHCXXTOP/share/LHCXX/4.0.1-sec/install/sharedstart.sh or .csh
At CERN, $LHCXXTOP is /afs/cern.ch/sw/lhcxx, you may want to use a
more recent release, check http:/cern.ch/anaphe for more information.
After this, you will have access to the 'aida-config' command which
is used in the GNUmakefile.
@@ -22,7 +22,7 @@
//
//
// $Id: TestEm2.cc,v 1.6 2001/10/25 15:12:05 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,6 +1,6 @@
**********************************************
Geant4 version $Name: geant4-04-00 $
(14-Dec-2001)
Geant4 version $Name: geant4-04-01 $
(28-Feb-2002)
Copyright : Geant4 Collaboration
**********************************************
Visualization Manager instantiating...
@@ -57,15 +57,13 @@ Current available graphics systems are:
Absorber is 17.848 cm of PbWO4
Em2PhysicsList::SetCuts:CutLength : 5 mm
phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z
Sandia crossSection below 50 KeV
PhysicsTables from 50 keV to 50 MeV in 100 bins.
phot: Total cross sections from Sandia parametrisation.
Em2PhysicsList::SetCuts:CutLength : 5 mm
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 10 keV to 100 GeV in 100 bins.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
@@ -173,20 +171,20 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100
User=37.72s Real=47.63s Sys=8.41s
User=23.26s Real=43.58s Sys=2.91s
LATERAL PROFILE CUMULATIVE LATERAL PROFILE
bin Mean rms bin Mean rms
0.00-> 1.11 radl: 18.73% 6.89% 0-> 1.11 radl: 18.73% 6.89%
1.11-> 2.22 radl: 25.86% 10.89% 0-> 2.22 radl: 44.59% 14.75%
2.22-> 3.33 radl: 21.63% 8.64% 0-> 3.33 radl: 66.22% 15.88%
3.33-> 4.44 radl: 13.21% 8.38% 0-> 4.44 radl: 79.43% 12.32%
4.44-> 5.55 radl: 8.11% 6.45% 0-> 5.55 radl: 87.55% 9.59%
5.55-> 6.66 radl: 3.81% 4.04% 0-> 6.66 radl: 91.36% 8.37%
6.66-> 7.77 radl: 2.14% 3.05% 0-> 7.77 radl: 93.49% 7.34%
7.77-> 8.88 radl: 0.82% 1.67% 0-> 8.88 radl: 94.32% 6.46%
8.88-> 9.99 radl: 0.60% 1.51% 0-> 9.99 radl: 94.92% 5.76%
0.00-> 1.11 radl: 15.10% 6.92% 0-> 1.11 radl: 15.10% 6.92%
1.11-> 2.22 radl: 24.22% 10.76% 0-> 2.22 radl: 39.32% 14.56%
2.22-> 3.33 radl: 21.55% 9.89% 0-> 3.33 radl: 60.87% 17.09%
3.33-> 4.44 radl: 14.26% 7.99% 0-> 4.44 radl: 75.13% 16.32%
4.44-> 5.55 radl: 8.32% 6.26% 0-> 5.55 radl: 83.44% 14.90%
5.55-> 6.66 radl: 4.76% 5.25% 0-> 6.66 radl: 88.20% 12.18%
6.66-> 7.77 radl: 2.84% 4.64% 0-> 7.77 radl: 91.04% 10.05%
7.77-> 8.88 radl: 1.83% 3.78% 0-> 8.88 radl: 92.88% 8.76%
8.88-> 9.99 radl: 1.10% 3.13% 0-> 9.99 radl: 93.98% 7.39%
@@ -194,21 +192,21 @@ Run Summary
bin Mean rms bin Mean rms
0.00-> 0.11 radl: 69.85% 10.68% 0-> 0.11 radl: 69.85% 10.68%
0.11-> 0.22 radl: 15.02% 6.67% 0-> 0.22 radl: 84.87% 8.03%
0.22-> 0.33 radl: 5.39% 4.26% 0-> 0.33 radl: 90.26% 6.67%
0.33-> 0.44 radl: 2.44% 1.97% 0-> 0.44 radl: 92.70% 5.97%
0.44-> 0.56 radl: 1.34% 1.20% 0-> 0.56 radl: 94.04% 5.85%
0.56-> 0.67 radl: 0.87% 0.76% 0-> 0.67 radl: 94.92% 5.76%
0.00-> 0.11 radl: 65.45% 11.91% 0-> 0.11 radl: 65.45% 11.91%
0.11-> 0.22 radl: 16.29% 6.69% 0-> 0.22 radl: 81.74% 9.13%
0.22-> 0.33 radl: 6.28% 4.06% 0-> 0.33 radl: 88.03% 8.05%
0.33-> 0.44 radl: 3.18% 2.44% 0-> 0.44 radl: 91.21% 7.60%
0.44-> 0.56 radl: 1.83% 1.93% 0-> 0.56 radl: 93.04% 7.46%
0.56-> 0.67 radl: 0.94% 0.97% 0-> 0.67 radl: 93.98% 7.39%
SUMMARY
energy deposit : 94.92 % E0 +- 5.76 % E0
charged traklen: 13.88 radl +- 0.85 radl
neutral traklen: 201.27 radl +- 19.31 radl
energy deposit : 93.98 % E0 +- 7.39 % E0
charged traklen: 13.66 radl +- 1.08 radl
neutral traklen: 201.00 radl +- 22.88 radl
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1086208127, 994034357
Current couple of seeds = 1983783255, 1611071241
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -22,7 +22,7 @@
//
//
// $Id: Em2DetectorConstruction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//
@@ -22,7 +22,7 @@
//
//
// $Id: Em2DetectorMessenger.hh,v 1.4 2001/10/25 15:12:06 maire Exp $
// GEANT4 tag $Name: geant4-04-00 $
// GEANT4 tag $Name: geant4-04-01 $
//
//

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