Import Geant4 9.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 17:01:34 +02:00
parent b1eb5424d2
commit e2d2f9810a
10384 changed files with 698580 additions and 628834 deletions
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10CalorHit.cc
/// \brief Implementation of the Em10CalorHit class
//
// $Id: Em10CalorHit.cc,v 1.4 2006-06-29 16:38:31 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10CalorimeterSD.cc
/// \brief Implementation of the Em10CalorimeterSD class
//
// $Id: Em10CalorimeterSD.cc,v 1.4 2006-06-29 16:38:33 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10DetectorConstruction.cc
/// \brief Implementation of the Em10DetectorConstruction class
//
// $Id: Em10DetectorConstruction.cc,v 1.32 2007-07-27 17:52:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -56,6 +58,7 @@
#include "G4Colour.hh"
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4ios.hh"
/////////////////////////////////////////////////////////////////////////////
@@ -217,10 +220,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SimpleSetUpALICE()
fSolidWorld = new G4Box("World", fWorldSizeR,fWorldSizeR,fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -232,23 +235,23 @@ G4VPhysicalVolume* Em10DetectorConstruction::SimpleSetUpALICE()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for window inside windowR for
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm ;
// G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
// fAbsorberRadius+0.001,
// fWindowThick/2.+0.001 );
@@ -256,11 +259,11 @@ G4VPhysicalVolume* Em10DetectorConstruction::SimpleSetUpALICE()
// G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
// fWorldMaterial, "WindowR");
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,fWindowZ),
// "WindowR",logicWindowR,fPhysicsWorld,false,0);
// window
// G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
// fAbsorberRadius, fWindowThick/2.);
@@ -279,12 +282,12 @@ G4VPhysicalVolume* Em10DetectorConstruction::SimpleSetUpALICE()
fAbsorberZ = fElectrodeZ + fElectrodeThick/2. + fAbsorberThickness/2. + 0.01*mm;
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fAbsorberRadius, fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ),
"Absorber", fLogicAbsorber,
fPhysicsWorld, false, 0);
@@ -419,10 +422,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpALICE06()
fSolidWorld = new G4Box("World", fWorldSizeR, fWorldSizeR, fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -438,19 +441,19 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpALICE06()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for radiator
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
// Drift Electrode on both sides of Radiator:
G4double zElectrode1 = fRadZ - fRadThick/2. - fElectrodeThick/2.;
@@ -582,15 +585,15 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpALICE06()
fSolidAbsorber = new G4Box("Absorber",
fAbsorberRadius,
fAbsorberRadius,
// fAbsorberRadius,
// 10.*mm,
// 10.*mm,
10.*mm,
fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0,
G4ThreeVector(0., 0., fAbsorberZ),
"Absorber", fLogicAbsorber,
@@ -727,10 +730,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBari05()
fSolidWorld = new G4Box("World", fWorldSizeR,fWorldSizeR,fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -745,19 +748,19 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBari05()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for radiator
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
// Drift Electrode on both sides of Radiator:
// G4Box* solidElectrode = new G4Box("Electrode",fAbsorberRadius*1.1,
@@ -883,13 +886,13 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBari05()
fSolidAbsorber = new G4Box("Absorber",
// fAbsorberRadius, fAbsorberRadius,
10.*mm,10.*mm,
// fAbsorberRadius, fAbsorberRadius,
10.*mm,10.*mm,
fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ),
"Absorber", fLogicAbsorber,
fPhysicsWorld, false, 0);
@@ -989,10 +992,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpHarris73()
fSolidWorld = new G4Box("World", fWorldSizeR,fWorldSizeR,fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -1004,23 +1007,23 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpHarris73()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for window inside windowR for
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm ;
// G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
// fAbsorberRadius+0.001,
// fWindowThick/2.+0.001 );
@@ -1028,11 +1031,11 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpHarris73()
// G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
// fWorldMaterial, "WindowR");
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,fWindowZ),
// "WindowR",logicWindowR,fPhysicsWorld,false,0);
// window
// G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
// fAbsorberRadius, fWindowThick/2.);
@@ -1051,12 +1054,12 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpHarris73()
fAbsorberZ = fElectrodeZ + fElectrodeThick/2. + fAbsorberThickness/2. + 0.01*mm;
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fAbsorberRadius, fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ),
"Absorber", fLogicAbsorber,
fPhysicsWorld, false, 0);
@@ -1158,10 +1161,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpWatase86()
fSolidWorld = new G4Box("World", fWorldSizeR,fWorldSizeR,fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -1173,23 +1176,23 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpWatase86()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for window inside windowR for
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm ;
// G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
// fAbsorberRadius+0.001,
// fWindowThick/2.+0.001 );
@@ -1197,11 +1200,11 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpWatase86()
// G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
// fWorldMaterial, "WindowR");
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,fWindowZ),
// "WindowR",logicWindowR,fPhysicsWorld,false,0);
// window
// G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
// fAbsorberRadius, fWindowThick/2.);
@@ -1220,12 +1223,12 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpWatase86()
fAbsorberZ = fElectrodeZ + fElectrodeThick/2. + fAbsorberThickness/2. + 0.01*mm;
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fAbsorberRadius, fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ),
"Absorber", fLogicAbsorber,
fPhysicsWorld, false, 0);
@@ -1327,10 +1330,10 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBarr90()
fSolidWorld = new G4Box("World", fWorldSizeR,fWorldSizeR,fWorldSizeZ/2.);
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fLogicWorld = new G4LogicalVolume(fSolidWorld, fWorldMaterial, "World");
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
fLogicWorld, 0, false, 0);
// TR radiator envelope
@@ -1342,23 +1345,23 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBarr90()
1.1*fAbsorberRadius, 0.5*fRadThick );
fLogicRadiator = new G4LogicalVolume(fSolidRadiator, fRadiatorMat,
"Radiator");
"Radiator");
fPhysicsRadiator = new G4PVPlacement(0,
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
G4ThreeVector(0,0,fRadZ),
"Radiator", fLogicRadiator,
fPhysicsWorld, false, 0 );
// create region for window inside windowR for
if( fRadRegion != 0 ) delete fRadRegion;
if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
fRadRegion->AddRootLogicalVolume(fLogicRadiator);
fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm ;
// G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
// fAbsorberRadius+0.001,
// fWindowThick/2.+0.001 );
@@ -1366,11 +1369,11 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBarr90()
// G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
// fWorldMaterial, "WindowR");
//
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,fWindowZ),
// "WindowR",logicWindowR,fPhysicsWorld,false,0);
// window
// G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
// fAbsorberRadius, fWindowThick/2.);
@@ -1389,12 +1392,12 @@ G4VPhysicalVolume* Em10DetectorConstruction::SetUpBarr90()
fAbsorberZ = fElectrodeZ + fElectrodeThick/2. + fAbsorberThickness/2. + 0.01*mm;
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
fAbsorberRadius, fAbsorberThickness/2.);
fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial,
"Absorber");
"Absorber");
fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ),
"Absorber", fLogicAbsorber,
fPhysicsWorld, false, 0);
@@ -1517,9 +1520,9 @@ void Em10DetectorConstruction::TestOld()
// fGapThick/2. ) ;
// G4LogicalVolume* logicGap = new G4LogicalVolume(solidGap,fGapMat, "Gap");
// G4VPhysicalVolume* physiGap = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,zGap),
// G4VPhysicalVolume* physiGap = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,zGap),
// "Gap",logicGap,physiWorld,false,0);
@@ -1528,9 +1531,9 @@ void Em10DetectorConstruction::TestOld()
// G4LogicalVolume* logicElectrode = new G4LogicalVolume(solidElectrode,
// fElectrodeMat, "Electrode");
// G4VPhysicalVolume* physiElectrode = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,zElectrode),
// G4VPhysicalVolume* physiElectrode = new G4PVPlacement(0,
// G4ThreeVector(0.,0.,zElectrode),
// "Electrode",logicElectrode,
// physiWorld,false,0);
// if(solidAbsorber) delete solidAbsorber ;
@@ -1749,9 +1752,9 @@ void Em10DetectorConstruction::SetMagField(G4double)
G4FieldManager* fieldMgr
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
if(magField) delete magField; //delete the existing magn field
if(magField) delete magField; //delete the existing magn field
if(fieldValue!=0.) // create a new one if non nul
if(fieldValue!=0.) // create a new one if non nul
{
magField = new G4UniformMagField(G4ThreeVector(fieldValue,0.,0.));
fieldMgr->SetDetectorField(magField);
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10DetectorMessenger.cc
/// \brief Implementation of the Em10DetectorMessenger class
//
// $Id: Em10DetectorMessenger.cc,v 1.11 2006-06-29 16:38:38 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10EventAction.cc
/// \brief Implementation of the Em10EventAction class
//
// $Id: Em10EventAction.cc,v 1.7 2010-06-06 04:33:02 perl Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10EventActionMessenger.cc
/// \brief Implementation of the Em10EventActionMessenger class
//
// $Id: Em10EventActionMessenger.cc,v 1.4 2006-06-29 16:38:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -23,6 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10Materials.cc
/// \brief Implementation of the Em10Materials class
//
//
//
// GEANT 4 class
@@ -40,6 +43,7 @@
#include "G4UnitsTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4SystemOfUnits.hh"
Em10Materials::Em10Materials()
{
@@ -390,22 +394,22 @@ void Em10Materials::Initialise()
ma = new G4Material("Li", 3., 6.941*g/mole, 1.*g/cm3);
ma = new G4Material("Be", 4., 9.01*g/mole, 1.848*g/cm3);
ma = new G4Material("C", 6., 12.00*g/mole, 2.0*g/cm3);
ma = new G4Material("Graphite",6., 12.00*g/mole, 2.265*g/cm3 );
ma = new G4Material("Graphite",6., 12.00*g/mole, 2.265*g/cm3 );
ma->SetChemicalFormula("Graphite");
ma = new G4Material("Al", 13., 26.98*g/mole, 2.7 *g/cm3);
ma = new G4Material("Si", 14., 29.055*g/mole, 2.33*g/cm3);
ma = new G4Material("LAr", 18., 39.95*g/mole, 1.393*g/cm3);
ma = new G4Material("Zr", 40., 91.224*g/mole, 4.0*g/cm3);
ma = new G4Material("LXe", 54., 131.29*g/mole, 3.02*g/cm3);
ma = new G4Material("Fe", 26., 55.85*g/mole, 7.87*g/cm3);
ma = new G4Material("Ni", 29., 58.6934*g/mole, 8.00*g/cm3);
ma = new G4Material("Cu", 29., 63.55*g/mole, 8.96*g/cm3);
ma = new G4Material("Au", 79., 196.97*g/mole, 19.32*g/cm3);
ma = new G4Material("Ta", 73., 180.9479*g/mole, 16.67*g/cm3);
ma = new G4Material("W", 74., 183.85*g/mole, 19.30*g/cm3);
ma = new G4Material("Pb", 82., 207.19*g/mole, 11.35*g/cm3);
ma = new G4Material("Bi", 83., 208.98*g/mole, 12.*g/cm3);
ma = new G4Material("U", 92., 238.03*g/mole, 18.95*g/cm3);
ma = new G4Material("Si", 14., 29.055*g/mole, 2.33*g/cm3);
ma = new G4Material("LAr", 18., 39.95*g/mole, 1.393*g/cm3);
ma = new G4Material("Zr", 40., 91.224*g/mole, 4.0*g/cm3);
ma = new G4Material("LXe", 54., 131.29*g/mole, 3.02*g/cm3);
ma = new G4Material("Fe", 26., 55.85*g/mole, 7.87*g/cm3);
ma = new G4Material("Ni", 29., 58.6934*g/mole, 8.00*g/cm3);
ma = new G4Material("Cu", 29., 63.55*g/mole, 8.96*g/cm3);
ma = new G4Material("Au", 79., 196.97*g/mole, 19.32*g/cm3);
ma = new G4Material("Ta", 73., 180.9479*g/mole, 16.67*g/cm3);
ma = new G4Material("W", 74., 183.85*g/mole, 19.30*g/cm3);
ma = new G4Material("Pb", 82., 207.19*g/mole, 11.35*g/cm3);
ma = new G4Material("Bi", 83., 208.98*g/mole, 12.*g/cm3);
ma = new G4Material("U", 92., 238.03*g/mole, 18.95*g/cm3);
G4Element* H = new G4Element ("Hydrogen", "H", 1. , 1.01*g/mole);
G4Element* N = new G4Element ("Nitrigen", "N", 7. , 14.00*g/mole);
@@ -429,7 +433,7 @@ void Em10Materials::Initialise()
ma->AddElement(I,1);
ma->SetChemicalFormula("CsI");
ma = new G4Material("Air" , 1.290*mg/cm3, 2);
// use fraction in mass
// use fraction in mass
ma->AddElement(N, 0.7);
ma->AddElement(O, 0.3);
*/
@@ -444,11 +448,11 @@ G4Material* Em10Materials::GetMaterial(const G4String& name)
// const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
G4Material* ma = G4Material::GetMaterial(name);
G4Material* ma = G4Material::GetMaterial(name);
G4cout << "Material is selected: " << ma->GetName() << G4endl;
return ma;
}
}
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10PhysicsList.cc
/// \brief Implementation of the Em10PhysicsList class
//
// $Id: Em10PhysicsList.cc,v 1.25 2009-11-21 16:12:01 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
#include "Em10PhysicsList.hh"
@@ -39,6 +41,7 @@
#include "G4Material.hh"
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4ios.hh"
#include <iomanip>
@@ -213,73 +216,73 @@ void Em10PhysicsList::ConstructEM()
{
// G4GammaXTRadiator*
processXTR = new G4GammaXTRadiator(pDet->GetLogicalRadiator(),
100.,
100.,
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"GammaXTRadiator");
100.,
100.,
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"GammaXTRadiator");
}
else if(fXTRModel == "gammaM" )
{
// G4XTRGammaRadModel*
processXTR = new G4XTRGammaRadModel(pDet->GetLogicalRadiator(),
100.,
100.,
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"GammaXTRadiator");
100.,
100.,
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"GammaXTRadiator");
}
else if(fXTRModel == "strawR" )
{
// G4StrawTubeXTRadiator*
processXTR = new G4StrawTubeXTRadiator(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
0.53, // pDet->GetFoilThick(),
3.14159, // pDet->GetGasThick(),
pDet->GetAbsorberMaterial(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
0.53, // pDet->GetFoilThick(),
3.14159, // pDet->GetGasThick(),
pDet->GetAbsorberMaterial(),
true,
"strawXTRadiator");
"strawXTRadiator");
}
else if(fXTRModel == "regR" )
{
// G4RegularXTRadiator*
processXTR = new G4RegularXTRadiator(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
}
else if(fXTRModel == "transpR" )
{
// G4TransparentRegXTRadiator*
processXTR = new G4TransparentRegXTRadiator(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
}
else if(fXTRModel == "regM" )
{
// G4XTRRegularRadModel*
processXTR = new G4XTRRegularRadModel(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
}
else if(fXTRModel == "transpM" )
@@ -287,12 +290,12 @@ void Em10PhysicsList::ConstructEM()
// G4XTRTransparentRegRadModel*
// processXTR = new G4XTRTransparentRegRadModel(pDet->GetLogicalRadiator(),
processXTR = new Em10XTRTransparentRegRadModel(pDet->GetLogicalRadiator(),
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
pDet->GetFoilMaterial(),
pDet->GetGasMaterial(),
pDet->GetFoilThick(),
pDet->GetGasThick(),
pDet->GetFoilNumber(),
"RegularXTRadiator");
}
else
{
@@ -356,7 +359,7 @@ void Em10PhysicsList::ConstructEM()
}
else if( particleName == "mu+" ||
particleName == "mu-" )
particleName == "mu-" )
{
// Construct processes for muon+
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc
/// \brief Implementation of the Em10PhysicsListMessenger class
//
// $Id: Em10PhysicsListMessenger.cc,v 1.9 2006-06-29 16:38:52 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
//
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc
/// \brief Implementation of the Em10PrimaryGeneratorAction class
//
// $Id: Em10PrimaryGeneratorAction.cc,v 1.6 2006-06-29 16:38:55 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -43,6 +45,8 @@
#include "G4ParticleDefinition.hh"
#include "Randomize.hh"
#include "G4ios.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc
/// \brief Implementation of the Em10PrimaryGeneratorMessenger class
//
// $Id: Em10PrimaryGeneratorMessenger.cc,v 1.4 2006-06-29 16:38:57 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -37,6 +39,7 @@
#include "Em10PrimaryGeneratorAction.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10RunAction.cc
/// \brief Implementation of the Em10RunAction class
//
// $Id: Em10RunAction.cc,v 1.9 2006-06-29 16:38:59 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -39,6 +41,8 @@
#include "G4ios.hh"
#include <iomanip>
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "Randomize.hh"
//////////////////////////////////////////////////////////////////////////////
@@ -50,6 +54,17 @@ Em10RunAction::Em10RunAction()
{
runMessenger = new Em10RunMessenger(this);
saveRndm = 1;
EnergySumAbs = EnergySquareSumAbs = tlSumAbs = tlsquareSumAbs =
nStepSumCharged = nStepSum2Charged= nStepSumNeutral = nStepSum2Neutral=
TotNbofEvents = SumCharged= SumNeutral=Sum2Charged=Sum2Neutral=Selectron=
Spositron=Transmitted=Reflected =dStep=entryStep=underStep=overStep=
dEn = entryEn= underEn=overEn=dTt = entryTt=underTt=overTt=Ttmean=
Tt2mean=dTb = entryTb=underTb=overTb=Tbmean=Tb2mean=dTsec =entryTsec=
underTsec=overTsec=dTh = entryTh=underTh=overTh=dThback =entryThback=
underThback=overThback=dR =entryR =underR =overR =Rmean=R2mean=dEGamma=
entryGamma = underGamma=overGamma=dz=entryvertexz=undervertexz=
oververtexz=0.;
}
////////////////////////////////////////////////////////////////////////////
@@ -63,76 +78,6 @@ Em10RunAction::~Em10RunAction()
void Em10RunAction::bookHisto()
{
/*
// init hbook
hbookManager = new HBookFile(histName, 68);
assert (hbookManager != 0);
// book histograms
if(nbinStep>0)
{
histo1 = hbookManager->histogram("number of steps/event"
,nbinStep,Steplow,Stephigh) ;
assert (histo1 != 0);
}
if(nbinEn>0)
{
histo2 = hbookManager->histogram("Energy Loss (keV)"
,nbinEn,Enlow/keV,Enhigh/keV) ;
assert (histo2 != 0);
}
if(nbinTh>0)
{
histo3 = hbookManager->histogram("angle distribution at exit(deg)"
,nbinTh,Thlow/deg,Thhigh/deg) ;
assert (histo3 != 0);
}
if(nbinR>0)
{
histo4 = hbookManager->histogram("lateral distribution at exit(mm)"
,nbinR ,Rlow,Rhigh) ;
assert (histo4 != 0);
}
if(nbinTt>0)
{
histo5 = hbookManager->histogram("kinetic energy of the primary at exit(MeV)"
,nbinTt,Ttlow,Tthigh) ;
assert (histo5 != 0);
}
if(nbinThback>0)
{
histo6 = hbookManager->histogram("angle distribution of backscattered primaries(deg)"
,nbinThback,Thlowback/deg,Thhighback/deg) ;
assert (histo6 != 0);
}
if(nbinTb>0)
{
histo7 = hbookManager->histogram("kinetic energy of the backscattered primaries (MeV)"
,nbinTb,Tblow,Tbhigh) ;
assert (histo7 != 0);
}
if(nbinTsec>0)
{
histo8 = hbookManager->histogram("kinetic energy of the charged secondaries (MeV)"
,nbinTsec,Tseclow,Tsechigh) ;
assert (histo8 != 0);
}
if(nbinvertexz>0)
{
histo9 = hbookManager->histogram("z of secondary charged vertices(mm)"
,nbinvertexz ,zlow,zhigh) ;
assert (histo9 != 0);
}
if(nbinGamma>0)
{
histo10= hbookManager->histogram("kinetic energy of gammas escaping the absorber (MeV)"
// ,nbinGamma,ElowGamma,EhighGamma) ;
,nbinGamma,std::log10(ElowGamma),std::log10(EhighGamma)) ;
assert (histo10 != 0);
}
*/
}
/////////////////////////////////////////////////////////////////////////////
@@ -173,7 +118,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
Transmitted=0.;
Reflected =0.;
// plot definitions
// plot definitions
if(nbinStep>0)
{
@@ -181,7 +126,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryStep=0.;
underStep=0.;
overStep=0.;
for(G4int ist=0; ist<nbinStep; ist++)
for(G4int ist=0; ist<200; ist++)
{
distStep[ist]=0.;
}
@@ -193,7 +138,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
underEn=0.;
overEn=0.;
for (G4int ien=0; ien<nbinEn; ien++) distEn[ien]=0.;
for (G4int ien=0; ien<200; ien++) distEn[ien]=0.;
}
if(nbinTt>0)
{
@@ -202,7 +147,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
underTt=0.;
overTt=0.;
for (G4int itt=0; itt<nbinTt; itt++) distTt[itt]=0.;
for (G4int itt=0; itt<200; itt++) distTt[itt]=0.;
Ttmean=0.;
Tt2mean=0.;
@@ -213,7 +158,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryTb=0.;
underTb=0.;
overTb=0.;
for (G4int itt=0; itt<nbinTb; itt++)
for (G4int itt=0; itt<200; itt++)
{
distTb[itt]=0.;
}
@@ -226,7 +171,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryTsec=0.;
underTsec=0.;
overTsec=0.;
for (G4int its=0; its<nbinTsec; its++)
for (G4int its=0; its<200; its++)
{
distTsec[its]=0.;
}
@@ -237,7 +182,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryTh=0.;
underTh=0.;
overTh=0.;
for (G4int ith=0; ith<nbinTh; ith++)
for (G4int ith=0; ith<200; ith++)
{
distTh[ith]=0.;
}
@@ -249,7 +194,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryThback=0.;
underThback=0.;
overThback=0.;
for (G4int ithback=0; ithback<nbinThback; ithback++)
for (G4int ithback=0; ithback<200; ithback++)
{
distThback[ithback]=0.;
}
@@ -262,7 +207,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryR =0.;
underR =0.;
overR =0.;
for (G4int ir =0; ir <nbinR ; ir++)
for (G4int ir =0; ir<200; ir++)
{
distR[ir]=0.;
}
@@ -276,7 +221,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryGamma = 0.;
underGamma=0.;
overGamma=0.;
for (G4int ig=0; ig<nbinGamma; ig++)
for (G4int ig=0; ig<200; ig++)
{
distGamma[ig]=0.;
}
@@ -287,7 +232,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
entryvertexz=0.;
undervertexz=0.;
oververtexz=0.;
for(G4int iz=0; iz<nbinvertexz; iz++)
for(G4int iz=0; iz<200; iz++)
{
distvertexz[iz]=0.;
}
@@ -301,6 +246,7 @@ void Em10RunAction::BeginOfRunAction(const G4Run* aRun)
void Em10RunAction::EndOfRunAction(const G4Run*)
{
G4double sAbs,sigAbs,sigstep,sigcharged,signeutral;
if(0.0 >= TotNbofEvents) { return; }
tlSumAbs /= TotNbofEvents ;
sAbs = tlsquareSumAbs/TotNbofEvents-tlSumAbs*tlSumAbs ;
@@ -351,8 +297,8 @@ void Em10RunAction::EndOfRunAction(const G4Run*)
Transmitted /=TotNbofEvents ;
Reflected /=TotNbofEvents ;
G4cout << " ================== run summary =====================" << G4endl;
G4int prec = G4cout.precision(6);
G4cout << " ================== run summary =====================" << G4endl;
G4int prec = G4cout.precision(6);
G4cout << " end of Run TotNbofEvents = " <<
TotNbofEvents << G4endl ;
G4cout << " mean charged track length in absorber=" <<
@@ -725,7 +671,7 @@ void Em10RunAction::EndOfRunAction(const G4Run*)
}
}
G4cout.precision(prec);
G4cout.precision(prec);
if (G4VVisManager::GetConcreteInstance())
{
@@ -750,18 +696,18 @@ void Em10RunAction::CountEvent()
/////////////////////////////////////////////////////////////////////////
void Em10RunAction::AddnStepsCharged(G4double ns)
void Em10RunAction::AddnStepsCharged(G4double nstp)
{
nStepSumCharged += ns;
nStepSum2Charged += ns*ns;
nStepSumCharged += nstp;
nStepSum2Charged += nstp*nstp;
}
////////////////////////////////////////////////////////////////////////
void Em10RunAction::AddnStepsNeutral(G4double ns)
void Em10RunAction::AddnStepsNeutral(G4double nstp)
{
nStepSumNeutral += ns;
nStepSum2Neutral += ns*ns;
nStepSumNeutral += nstp;
nStepSum2Neutral += nstp*nstp;
}
////////////////////////////////////////////////////////////////////////////
@@ -792,313 +738,77 @@ void Em10RunAction::AddTrRef(G4double tr,G4double ref)
void Em10RunAction::FillNbOfSteps(G4double)// ns)
{
/*
const G4double eps = 1.e-10 ;
G4double n,bin ;
G4int ibin;
if(histo1)
{
entryStep += 1. ;
if(ns<Steplow)
underStep += 1. ;
else if(ns>=Stephigh)
overStep += 1. ;
else
{
n = ns+eps ;
bin = (n-Steplow)/dStep ;
ibin= (G4int)bin ;
distStep[ibin] += 1. ;
}
histo1->accumulate(ns) ;
}
*/
}
//////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillEn(G4double En)
{
// #ifndef G4NOHIST
G4double bin ;
G4int ibin;
// if(histo2)
{
entryEn += 1. ;
entryEn += 1. ;
if(Enlow < Enhigh) {
if(En < Enlow) underEn += 1. ;
else if( En >= Enhigh) overEn += 1. ;
else
{
bin = (En-Enlow)/dEn ;
ibin= (G4int)bin ;
distEn[ibin] += 1. ;
bin = (En-Enlow)/dEn;
ibin= (G4int)bin;
if(ibin < 0) { ibin = 0; }
if(ibin > 199) { ibin = 199; }
distEn[ibin] += 1.;
}
// histo2->accumulate(En/keV) ; // was /MeV
}
// #endif
}
////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillTt(G4double) // En)
{
/*
G4double bin ;
G4int ibin;
if(histo5)
{
entryTt += 1. ;
Ttmean += En ;
Tt2mean += En*En ;
if(En<Ttlow)
underTt += 1. ;
else if(En>=Tthigh)
overTt += 1. ;
else
{
bin = (En-Ttlow)/dTt ;
ibin= (G4int)bin ;
distTt[ibin] += 1. ;
}
histo5->accumulate(En/MeV) ;
}
*/
}
//////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillTb(G4double) // En)
{
/*
G4double bin ;
G4int ibin;
if(histo7)
{
entryTb += 1. ;
Tbmean += En ;
Tb2mean += En*En ;
if(En<Tblow)
underTb += 1. ;
else if(En>=Tbhigh)
overTb += 1. ;
else
{
bin = (En-Tblow)/dTb ;
ibin= (G4int)bin ;
distTb[ibin] += 1. ;
}
histo7->accumulate(En/MeV) ;
}
*/
}
///////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillTsec(G4double) // En)
{
/*
G4double bin ;
G4int ibin;
if(histo8)
{
entryTsec += 1. ;
if(En<Tseclow)
underTsec += 1. ;
else if(En>=Tsechigh)
overTsec += 1. ;
else
{
bin = (En-Tseclow)/dTsec ;
ibin= (G4int)bin ;
distTsec[ibin] += 1. ;
}
histo8->accumulate(En/MeV) ;
}
*/
}
/////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillGammaSpectrum(G4double) // En)
{
/*
G4double bin ;
G4int ibin;
if(histo10)
{
entryGamma += 1. ;
if(En<ElowGamma)
underGamma += 1. ;
else if(En>=EhighGamma)
overGamma += 1. ;
else
{
bin = std::log(En/ElowGamma)/dEGamma;
ibin= (G4int)bin ;
distGamma[ibin] += 1. ;
}
histo10->accumulate(std::log10(En/MeV)) ;
}
*/
}
////////////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillTh(G4double) // Th)
{
/*
static const G4double cn=pi/(64800.*dTh) ;
static const G4double cs=pi/
(64800.*(std::cos(Thlow)-std::cos(Thlow+dTh)));
G4double bin,Thbin ,wg;
G4int ibin;
if(histo3)
{
entryTh += 1. ;
wg = 0.;
if(Th<Thlow)
underTh += 1. ;
else if(Th>=Thhigh)
overTh += 1. ;
else
{
bin = (Th-Thlow)/dTh ;
ibin= (G4int)bin ;
Thbin = Thlow+ibin*dTh ;
if(Th > 0.001*dTh)
wg=cn/std::sin(Th) ;
else
{
G4double thdeg=Th*180./pi;
G4cout << "theta < 0.001*dth (from plot excluded) theta="
<< std::setw(12) << std::setprecision(4) << thdeg << G4endl;
wg=0. ;
}
distTh[ibin] += wg ;
}
histo3->accumulate(Th/deg, wg) ;
}
*/
}
//////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillThBack(G4double) // Th)
{
/*
static const G4double cn=pi/(64800.*dThback) ;
static const G4double cs=pi/
(64800.*(std::cos(Thlowback)-std::cos(Thlowback+dThback)));
G4double bin,Thbin,wg ;
G4int ibin;
if(histo6)
{
entryThback += 1. ;
if(Th<Thlowback)
underThback += 1. ;
else if(Th>=Thhighback)
overThback += 1. ;
else
{
bin = (Th-Thlowback)/dThback ;
ibin= (G4int)bin ;
Thbin = Thlowback+ibin*dThback ;
if(Th > 0.001*dThback)
wg=cn/std::sin(Th) ;
else
{
G4double thdeg=Th*180./pi;
G4cout << "theta < 0.001*dth (from plot excluded) theta="
<< std::setw(12) << std::setprecision(4) << thdeg << G4endl;
wg=0. ;
}
distThback[ibin] += wg ;
}
histo6->accumulate(Th/deg, wg) ;
}
*/
}
//////////////////////////////////////////////////////////////////////////
void Em10RunAction::FillR(G4double) // R )
{
/*
G4double bin ;
G4int ibin;
if(histo4)
{
entryR += 1. ;
Rmean += R ;
R2mean += R*R ;
if(R <Rlow)
underR += 1. ;
else if(R >=Rhigh)
overR += 1. ;
else
{
bin = (R -Rlow)/dR ;
ibin= (G4int)bin ;
distR[ibin] += 1. ;
}
histo4->accumulate(R/mm) ;
}
*/
}
/////////////////////////////////////////////////////////////////////////////
void Em10RunAction::Fillvertexz(G4double) // z )
{
/*
G4double bin ;
G4int ibin;
if(histo9)
{
entryvertexz += 1. ;
if(z <zlow)
undervertexz += 1. ;
else if(z >=zhigh)
oververtexz += 1. ;
else
{
bin = (z -zlow)/dz ;
ibin = (G4int)bin ;
distvertexz[ibin] += 1. ;
}
histo9->accumulate(z/mm) ;
}
*/
}
//////////////////////////////////////////////////////////////////////////////
@@ -1111,213 +821,221 @@ void Em10RunAction::SethistName(G4String name)
void Em10RunAction::SetnbinStep(G4int nbin)
{
nbinStep = nbin ;
if(nbinStep>0)
G4cout << " Nb of bins in #step plot = " << nbinStep << G4endl ;
if(nbin> 0 && nbin<= 200) {
nbinStep = nbin;
G4cout << " Nb of bins in #step plot = " << nbinStep << G4endl ;
}
}
void Em10RunAction::SetSteplow(G4double low)
{
Steplow = low ;
if(nbinStep>0)
G4cout << " low in the #step plot = " << Steplow << G4endl ;
if(low >= 0.0){
Steplow = low ;
G4cout << " low in the #step plot = " << Steplow << G4endl ;
}
}
void Em10RunAction::SetStephigh(G4double high)
{
Stephigh = high ;
if(nbinStep>0)
G4cout << " high in the #step plot = " << Stephigh << G4endl ;
if(high > 0.0) {
Stephigh = high;
G4cout << " high in the #step plot = " << Stephigh << G4endl ;
}
}
////////////////////////////////////////////////////////////////////////
void Em10RunAction::SetnbinEn(G4int nbin)
{
nbinEn = nbin ;
if(nbinEn > 0) G4cout << " Nb of bins in Edep plot = " << nbinEn << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinEn = nbin;
G4cout << " Nb of bins in Edep plot = " << nbinEn << G4endl ;
}
}
void Em10RunAction::SetEnlow(G4double Elow)
{
Enlow = Elow ;
if(nbinEn>0) G4cout << " Elow in the Edep plot = " << Enlow << G4endl ;
if(Elow >= 0.0) {
Enlow = Elow ;
G4cout << " Elow in the Edep plot = " << Enlow << G4endl ;
}
}
void Em10RunAction::SetEnhigh(G4double Ehigh)
{
Enhigh = Ehigh ;
if(nbinEn>0) G4cout << " Ehigh in the Edep plot = " << Enhigh << G4endl ;
if(Ehigh > 0.0) {
Enhigh = Ehigh ;
G4cout << " Ehigh in the Edep plot = " << Enhigh << G4endl ;
}
}
/////////////////////////////////////////////////////////////////////////
void Em10RunAction::SetnbinGamma(G4int nbin)
{
nbinGamma = nbin ;
if(nbinGamma>0)
G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinGamma = nbin;
G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << G4endl ;
}
}
void Em10RunAction::SetElowGamma(G4double Elow)
{
ElowGamma = Elow ;
if(nbinGamma>0)
G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << G4endl ;
if(Elow >= 0.0) {
ElowGamma = Elow;
G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << G4endl ;
}
}
void Em10RunAction::SetEhighGamma(G4double Ehigh)
{
EhighGamma = Ehigh ;
if(nbinGamma>0)
G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << G4endl ;
if(Ehigh > 0.0) {
EhighGamma = Ehigh;
G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << G4endl ;
}
}
void Em10RunAction::SetnbinTt(G4int nbin)
{
nbinTt = nbin ;
if(nbinTt>0)
G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinTt = nbin;
G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << G4endl ;
}
}
void Em10RunAction::SetTtlow(G4double Elow)
{
Ttlow = Elow ;
if(nbinTt>0)
G4cout << " Elow in the Etransmission plot = " << Ttlow << G4endl ;
if(Elow >= 0.0) {
Ttlow = Elow;
G4cout << " Elow in the Etransmission plot = " << Ttlow << G4endl ;
}
}
void Em10RunAction::SetTthigh(G4double Ehigh)
{
Tthigh = Ehigh ;
if(nbinTt>0)
G4cout << " Ehigh in the Etransmission plot = " << Tthigh << G4endl ;
if(Ehigh > 0.0) {
Tthigh = Ehigh;
G4cout << " Ehigh in the Etransmission plot = " << Tthigh << G4endl ;
}
}
void Em10RunAction::SetnbinTb(G4int nbin)
{
nbinTb = nbin ;
if(nbinTb>0)
G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinTb = nbin;
G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << G4endl ;
}
}
void Em10RunAction::SetTblow(G4double Elow)
{
Tblow = Elow ;
if(nbinTb>0)
G4cout << " Elow in the Ebackscattered plot = " << Tblow << G4endl ;
}
void Em10RunAction::SetTbhigh(G4double Ehigh)
{
Tbhigh = Ehigh ;
if(nbinTb>0)
G4cout << " Ehigh in the Ebackscattered plot = " << Tbhigh << G4endl ;
}
void Em10RunAction::SetnbinTsec(G4int nbin)
{
nbinTsec = nbin ;
if(nbinTsec>0)
G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinTsec = nbin;
G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << G4endl ;
}
}
void Em10RunAction::SetTseclow(G4double Elow)
{
Tseclow = Elow ;
if(nbinTsec>0)
G4cout << " Elow in the Tsecondary plot = " << Tseclow << G4endl ;
}
void Em10RunAction::SetTsechigh(G4double Ehigh)
{
Tsechigh = Ehigh ;
if(nbinTsec>0)
G4cout << " Ehigh in the Tsecondary plot = " << Tsechigh << G4endl ;
}
void Em10RunAction::SetnbinR(G4int nbin)
{
nbinR = nbin ;
if(nbinR>0)
G4cout << " Nb of bins in R plot = " << nbinR << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinR = nbin;
G4cout << " Nb of bins in R plot = " << nbinR << G4endl ;
}
}
void Em10RunAction::SetRlow(G4double rlow)
{
Rlow = rlow ;
if(nbinR>0)
G4cout << " Rlow in the R plot = " << Rlow << G4endl ;
}
void Em10RunAction::SetRhigh(G4double rhigh)
{
Rhigh = rhigh ;
if(nbinR>0)
G4cout << " Rhigh in the R plot = " << Rhigh << G4endl ;
}
void Em10RunAction::Setnbinzvertex(G4int nbin)
{
nbinvertexz = nbin ;
if(nbinvertexz>0)
G4cout << " Nb of bins in Z plot = " << nbinvertexz << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinvertexz = nbin;
G4cout << " Nb of bins in Z plot = " << nbinvertexz << G4endl ;
}
}
void Em10RunAction::Setzlow(G4double z)
{
zlow = z ;
if(nbinvertexz>0)
G4cout << " zlow in the Z plot = " << zlow << G4endl ;
}
void Em10RunAction::Setzhigh(G4double z)
{
zhigh = z ;
if(nbinvertexz>0)
G4cout << " zhigh in the Z plot = " << zhigh << G4endl ;
}
void Em10RunAction::SetnbinTh(G4int nbin)
{
nbinTh = nbin ;
if(nbinTh>0)
G4cout << " Nb of bins in Theta plot = " << nbinTh << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinTh = nbin;
G4cout << " Nb of bins in Theta plot = " << nbinTh << G4endl ;
}
}
void Em10RunAction::SetThlow(G4double Tlow)
{
Thlow = Tlow ;
if(nbinTh>0)
G4cout << " Tlow in the Theta plot = " << Thlow << G4endl ;
}
void Em10RunAction::SetThhigh(G4double Thigh)
{
Thhigh = Thigh ;
if(nbinTh>0)
G4cout << " Thigh in the Theta plot = " << Thhigh << G4endl ;
}
void Em10RunAction::SetnbinThBack(G4int nbin)
{
nbinThback = nbin ;
if(nbinThback>0)
G4cout << " Nb of bins in Theta plot = " << nbinThback << G4endl ;
if(nbin > 0 && nbin <= 200) {
nbinThback = nbin;
G4cout << " Nb of bins in Theta plot = " << nbinThback << G4endl ;
}
}
void Em10RunAction::SetThlowBack(G4double Tlow)
{
Thlowback = Tlow ;
if(nbinThback>0)
G4cout << " Tlow in the Theta plot = " << Thlowback << G4endl ;
}
void Em10RunAction::SetThhighBack(G4double Thigh)
{
Thhighback = Thigh ;
if(nbinThback>0)
G4cout << " Thigh in the Theta plot = " << Thhighback << G4endl ;
}
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10RunMessenger.cc
/// \brief Implementation of the Em10RunMessenger class
//
// $Id: Em10RunMessenger.cc,v 1.5 2006-06-29 16:39:01 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -380,7 +382,7 @@ void Em10RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues)
if (command == RndmSaveCmd)
runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues));
if (command == RndmReadCmd)
{ G4cout << "\n---> rndm status restored from file: " << newValues << G4endl;
CLHEP::HepRandom::restoreEngineStatus(newValues);
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10StepCut.cc
/// \brief Implementation of the Em10StepCut class
//
// $Id: Em10StepCut.cc,v 1.3 2006-06-29 16:39:04 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
#include "Em10StepCut.hh"
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10SteppingAction.cc
/// \brief Implementation of the Em10SteppingAction class
//
// $Id: Em10SteppingAction.cc,v 1.6 2006-06-29 16:39:06 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//
@@ -33,37 +35,32 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "Em10DetectorConstruction.hh"
#include "G4EnergyLossTables.hh"
#include "G4SteppingManager.hh"
#include "G4TrackVector.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4Gamma.hh"
#include "Em10SteppingAction.hh"
#include "Em10PrimaryGeneratorAction.hh"
#include "Em10EventAction.hh"
#include "Em10RunAction.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "Em10SteppingMessenger.hh"
#include "G4VPhysicalVolume.hh"
#include "G4PhysicalConstants.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4UImanager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em10SteppingAction::Em10SteppingAction(Em10DetectorConstruction* DET,
Em10EventAction* EA,
Em10RunAction* RA)
:detector (DET),eventaction (EA),runaction (RA),steppingMessenger(0),
IDold(-1) ,evnoold(-1)
{
steppingMessenger = new Em10SteppingMessenger(this);
}
:detector (DET),eventaction (EA),runaction (RA),
IDold(-1) ,evnoold(-1)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em10SteppingAction::~Em10SteppingAction()
{
delete steppingMessenger ;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -71,139 +68,87 @@ void Em10SteppingAction::UserSteppingAction(const G4Step* aStep)
{
G4double Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,yend,zend,rend ;
G4int evno = eventaction->GetEventno() ;
IDnow = evno+10000*(aStep->GetTrack()->GetTrackID())+
100000000*(aStep->GetTrack()->GetParentID());
if(IDnow != IDold)
{
IDold=IDnow ;
if(
(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e-") &&
((aStep->GetTrack()->GetTrackID() != 1) ||
(aStep->GetTrack()->GetParentID() != 0)) )
||
(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e+") &&
((aStep->GetTrack()->GetTrackID() != 1) ||
(aStep->GetTrack()->GetParentID() != 0)) )
)
runaction->Fillvertexz(aStep->GetTrack()->GetVertexPosition().x());
const G4Track* track = aStep->GetTrack();
const G4StepPoint* prePoint = aStep->GetPreStepPoint();
G4int trackID = track->GetTrackID();
G4int parentID = track->GetParentID();
if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber")
{
if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e-") &&
((aStep->GetTrack()->GetTrackID() != 1) ||
(aStep->GetTrack()->GetParentID() != 0)) )
{
eventaction->AddCharged() ;
eventaction->AddE() ;
Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!!
Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!!
runaction->FillTsec(Tsec) ;
const G4DynamicParticle* dynParticle = track->GetDynamicParticle();
const G4ParticleDefinition* particle = dynParticle->GetDefinition();
G4VPhysicalVolume* preVol = prePoint->GetPhysicalVolume();
G4VPhysicalVolume* postVol = aStep->GetPostStepPoint()->GetPhysicalVolume();
IDnow = evno+10000*trackID+100000000*parentID;
if(IDnow != IDold) {
IDold=IDnow ;
if(trackID > 1 && (particle == G4Electron::Electron() ||
particle == G4Positron::Positron() ||
particle == G4Gamma::Gamma())) {
runaction->Fillvertexz(track->GetVertexPosition().z());
if(preVol->GetName()=="Absorber") {
if(particle == G4Gamma::Gamma()) {
eventaction->AddNeutral() ;
} else {
eventaction->AddCharged() ;
Tsec = track->GetKineticEnergy() ;
Tsec += aStep->GetTotalEnergyDeposit() ;
runaction->FillTsec(Tsec) ;
if(particle == G4Electron::Electron()) {
eventaction->AddE() ;
} else {
eventaction->AddP() ;
}
}
}
}
else
if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e+") &&
((aStep->GetTrack()->GetTrackID() != 1) ||
(aStep->GetTrack()->GetParentID() != 0)) )
{
eventaction->AddCharged() ;
eventaction->AddP() ;
Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!!
Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!!
runaction->FillTsec(Tsec) ;
}
else
if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "gamma") &&
((aStep->GetTrack()->GetTrackID() != 1) ||
(aStep->GetTrack()->GetParentID() != 0)) )
{
eventaction->AddNeutral() ;
}
}
}
if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber")
{
if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e-")
||
((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "e+"))
eventaction->CountStepsCharged() ;
if(preVol->GetName()=="Absorber") {
if(particle == G4Electron::Electron() ||
particle == G4Positron::Positron()) {
eventaction->CountStepsCharged() ;
if ((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName()) == "gamma")
eventaction->CountStepsNeutral() ;
}
} else if(particle == G4Gamma::Gamma()) {
eventaction->CountStepsNeutral() ;
}
if (
(((aStep->GetTrack()->GetTrackID() == 1) &&
(aStep->GetTrack()->GetParentID()== 0)) ||
(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName() ==
Em10PrimaryGeneratorAction::GetPrimaryName()))
&&
(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber")
&&
(aStep->GetTrack()->GetNextVolume()->GetName()=="World") &&
(aStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName() == "Transportation") &&
(aStep->GetTrack()->GetMomentumDirection().x()>0.)
)
{
eventaction->SetTr();
Theta = std::acos(aStep->GetTrack()->GetMomentumDirection().x()) ;
runaction->FillTh(Theta) ;
Ttrans = aStep->GetTrack()->GetKineticEnergy() ;
runaction->FillTt(Ttrans) ;
yend= aStep->GetTrack()->GetPosition().y() ;
zend= aStep->GetTrack()->GetPosition().z() ;
rend = std::sqrt(yend*yend+zend*zend) ;
runaction->FillR(rend);
}
if (
(((aStep->GetTrack()->GetTrackID() == 1) &&
(aStep->GetTrack()->GetParentID()== 0)) ||
(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
GetParticleName() ==
Em10PrimaryGeneratorAction::GetPrimaryName()))
&&
(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") &&
(aStep->GetTrack()->GetNextVolume()->GetName()=="World") &&
(aStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName() == "Transportation") &&
(aStep->GetTrack()->GetMomentumDirection().z()<0.)
)
{
eventaction->SetRef();
Thetaback = std::acos(aStep->GetTrack()->GetMomentumDirection().x()) ;
Thetaback -= 0.5*pi ;
runaction->FillThBack(Thetaback) ;
Tback = aStep->GetTrack()->GetKineticEnergy() ;
runaction->FillTb(Tback) ;
}
if(prePoint->GetStepStatus() == fGeomBoundary &&
preVol != postVol) {
if (
((aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") &&
(aStep->GetTrack()->GetNextVolume()->GetName()=="World") &&
(aStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName() == "Transportation") &&
(aStep->GetTrack()->GetMomentumDirection().x()>0.) &&
(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()
->GetParticleName() == "gamma"))
)
{
Egamma = aStep->GetTrack()->GetKineticEnergy() ;
runaction->FillGammaSpectrum(Egamma) ;
}
if(trackID == 1) {
if(track->GetMomentumDirection().z()>0.) {
eventaction->SetTr();
Theta = std::acos(track->GetMomentumDirection().z()) ;
runaction->FillTh(Theta) ;
Ttrans = track->GetKineticEnergy() ;
runaction->FillTt(Ttrans) ;
yend= aStep->GetTrack()->GetPosition().y() ;
zend= aStep->GetTrack()->GetPosition().x() ;
rend = std::sqrt(yend*yend+zend*zend) ;
runaction->FillR(rend);
} else {
eventaction->SetRef();
Thetaback = std::acos(aStep->GetTrack()->GetMomentumDirection().z());
Thetaback -= 0.5*pi ;
runaction->FillThBack(Thetaback) ;
Tback = aStep->GetTrack()->GetKineticEnergy() ;
runaction->FillTb(Tback) ;
}
}
if(track->GetMomentumDirection().z()>0. &&
particle == G4Gamma::Gamma()) {
Egamma = aStep->GetTrack()->GetKineticEnergy() ;
runaction->FillGammaSpectrum(Egamma) ;
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -1,63 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: Em10SteppingMessenger.cc,v 1.4 2006-06-29 16:39:09 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "Em10SteppingMessenger.hh"
#include "Em10SteppingAction.hh"
#include "G4UIdirectory.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em10SteppingMessenger::Em10SteppingMessenger(Em10SteppingAction* SA)
:steppingAction (SA)
{
steppingDir = new G4UIdirectory("/stepping/");
steppingDir->SetGuidance("stepping control");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Em10SteppingMessenger::~Em10SteppingMessenger()
{
delete steppingDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void Em10SteppingMessenger::SetNewValue(G4UIcommand*,G4String)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,9 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10SteppingVerbose.cc
/// \brief Implementation of the Em10SteppingVerbose class
//
// $Id: Em10SteppingVerbose.cc,v 1.6 2006-06-29 16:39:12 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -58,29 +60,29 @@ void Em10SteppingVerbose::StepInfo()
if( verboseLevel >= 3 ){
G4cout << G4endl;
G4cout << std::setw( 5) << "#Step#" << " "
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "NextVolu"
<< std::setw(10) << "Process"
<< std::setw(10) << "Dir_x" << " "
<< std::setw(10) << "Dir_y" << " "
<< std::setw(10) << "Dir_z" << " "
<< G4endl;
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "NextVolu"
<< std::setw(10) << "Process"
<< std::setw(10) << "Dir_x" << " "
<< std::setw(10) << "Dir_y" << " "
<< std::setw(10) << "Dir_z" << " "
<< G4endl;
}
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
// if( fStepStatus != fWorldBoundary){
if( fTrack->GetNextVolume() != 0 ) {
@@ -92,53 +94,53 @@ void Em10SteppingVerbose::StepInfo()
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){
G4cout << " "
<< std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
->GetProcessName();
} else {
G4cout << " UserLimit";
}
G4cout << std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().x(),"Length")
<< std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length")
<< std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length");
<< std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length")
<< std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length");
G4cout << G4endl;
if( verboseLevel == 2 ){
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
fN2ndariesAlongStepDoIt +
fN2ndariesPostStepDoIt;
fN2ndariesAlongStepDoIt +
fN2ndariesPostStepDoIt;
if(tN2ndariesTot>0){
G4cout << " :----- List of 2ndaries - "
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
G4cout << " :----- List of 2ndaries - "
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
<< std::setw(10)
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
G4cout << G4endl;
}
G4cout << " : "
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
<< std::setw(10)
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
G4cout << G4endl;
}
G4cout << " :-----------------------------"
<< "----------------------------------"
<< "-- EndOf2ndaries Info ---------------"
<< G4endl;
G4cout << " :-----------------------------"
<< "----------------------------------"
<< "-- EndOf2ndaries Info ---------------"
<< G4endl;
}
}
@@ -157,23 +159,23 @@ G4int prec = G4cout.precision(3);
G4cout << std::setw( 5) << "Step#" << " "
<< std::setw( 6) << "X" << " "
<< std::setw( 6) << "Y" << " "
<< std::setw( 6) << "Z" << " "
<< std::setw( 9) << "KineE" << " "
<< std::setw( 9) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
<< std::setw( 6) << "Y" << " "
<< std::setw( 6) << "Z" << " "
<< std::setw( 9) << "KineE" << " "
<< std::setw( 9) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if(fTrack->GetNextVolume()){
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
@@ -22,6 +22,9 @@
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10TrackingAction.cc
/// \brief Implementation of the Em10TrackingAction class
//
#include "Em10TrackingAction.hh"
@@ -30,6 +33,7 @@
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4SystemOfUnits.hh"
Em10TrackingAction::Em10TrackingAction()
{ }
@@ -23,6 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm10/src/Em10XTRTransparentRegRadModel.cc
/// \brief Implementation of the Em10XTRTransparentRegRadModel class
//
//
#include <complex>
@@ -31,6 +34,7 @@
#include "Randomize.hh"
#include "G4Integrator.hh"
#include "G4Gamma.hh"
#include "G4PhysicalConstants.hh"
using namespace std;
@@ -39,7 +43,7 @@ using namespace std;
// Constructor, destructor
Em10XTRTransparentRegRadModel::Em10XTRTransparentRegRadModel(G4LogicalVolume *anEnvelope,
G4Material* foilMat,G4Material* gasMat,
G4Material* foilMat,G4Material* gasMat,
G4double a, G4double b, G4int n,
const G4String& processName) :
G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,n,processName)
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: StepMax.cc,v 1.2 2006-06-29 16:39:16 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file electromagnetic/TestEm10/src/StepMax.cc
/// \brief Implementation of the StepMax class
//
// $Id$
//
///////////////////////////////////////////////////////////////////////////
@@ -32,6 +34,7 @@
// #include "StepMaxMessenger.hh"
// #include "Histo.hh"
#include "G4VPhysicalVolume.hh"
#include "G4SystemOfUnits.hh"
///////////////////////////////////////////////////////////////////////////