Import Geant4 11.1.0 source tree
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
|
||||
///\file "errorpropagation/errProp/.README.txt"
|
||||
///\brief Example errProp README page
|
||||
|
||||
/*! \page ExampleerrProp Example errProp
|
||||
|
||||
This is an example illustrating the use of the error propagation utility.
|
||||
|
||||
A G4ErrorFreeTrajState is created to simulate a muon track of 20 GeV along the X axis. Then the track is propagated until the target is reached.
|
||||
|
||||
The geometry is a simplified typical HEP detector:
|
||||
- An air beamline ( BEAM )
|
||||
- An air central detector ( CDET )
|
||||
- A copper calorimeter, divided in four ( ECAL )
|
||||
- An aluminium calorimeter, divided in ten ( HCAL )
|
||||
- An air muon detector ( MUON )
|
||||
|
||||
It is inmersed in a magnetic field along the Z axis with default value -1 kilogauss. This value can be changed with the command "/exerror/setField.
|
||||
|
||||
|
||||
The type of target can be chosen with the enviromental variable G4ERROR_TARGET:
|
||||
- PLANE_SURFACE : use a G4ErrorPlaneSurfaceTarget perpendicular to X at (2241. mm, 0, 0)
|
||||
- CYL_SURFACE : use a G4ErrorCylSurfaceTarget parallel to Z of radius 2220 mm
|
||||
- VOLUME : use a G4ErrorGeomVolumeTarget with volume name "MUON"
|
||||
- TRKLEN : use a G4ErrorTrackLengthTarget with track length 2230 mm
|
||||
|
||||
|
||||
The user may also choose if the propagation is done forwards (the natural way, loosing energy) or backwards (in opposite direction, gaining energy), with the enviromental variable G4ERROR_MODE:
|
||||
- FORWARDS : propagate in the forward direction
|
||||
- BACKWARDS : propagate in the backward direction
|
||||
|
||||
|
||||
There are also two modes of propagation, that can be chosen with the enviromental variable G4ERROR_PROP
|
||||
- UNTIL_TARGET : propagate until target, all steps in one go
|
||||
- STEP_BY_STEP propagate until target, returning control to the user at each step
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,58 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup the project
|
||||
cmake_minimum_required(VERSION 3.16...3.21)
|
||||
project(errProp)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Find Geant4 package, no UI and Vis drivers activated
|
||||
#
|
||||
find_package(Geant4 REQUIRED)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup Geant4 include directories and compile definitions
|
||||
#
|
||||
include(${Geant4_USE_FILE})
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Locate sources and headers for this project
|
||||
#
|
||||
include_directories(${PROJECT_SOURCE_DIR}/include
|
||||
${Geant4_INCLUDE_DIR})
|
||||
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
|
||||
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add the executable, and link it to the Geant4 libraries
|
||||
#
|
||||
add_executable(errProp errProp.cc ${sources} ${headers})
|
||||
target_link_libraries(errProp ${Geant4_LIBRARIES} )
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Copy all scripts to the build directory, i.e. the directory in which we
|
||||
# build errorpropagation. This is so that we can run the executable directly because it
|
||||
# relies on these scripts being in the current working directory.
|
||||
#
|
||||
set(errorpropagation_SCRIPTS
|
||||
|
||||
)
|
||||
|
||||
foreach(_script ${errorpropagation_SCRIPTS})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/${_script}
|
||||
${PROJECT_BINARY_DIR}/${_script}
|
||||
COPYONLY
|
||||
)
|
||||
endforeach()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add program to the project targets
|
||||
# (this avoids the need of typing the program name after make)
|
||||
#
|
||||
add_custom_target(errorpropagation DEPENDS errProp)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
|
||||
#
|
||||
install(TARGETS errProp DESTINATION bin)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := errProp
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
# Example errorpropagation History
|
||||
|
||||
See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
which **must** added in reverse chronological order (newest at the top). It must **not**
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
|
||||
## 2022-11-04 I. Hrivnacova (exerrprop-V11-00-02)
|
||||
- Fixed Doxygen file descriptions
|
||||
|
||||
## 2022-13-09 I. Hrivnacova (exerrprop-V11-00-01)
|
||||
- Moved the example in the new errProp directory and renamed the executable
|
||||
from errprop in errProp.
|
||||
|
||||
## 2021-12-10 Ben Morgan (exerrprop-V11-00-00)
|
||||
- Change to new Markdown History format
|
||||
|
||||
---
|
||||
|
||||
# History entries prior to 11.0
|
||||
|
||||
May 24, 2021 B. Morgan (exerrprop-V10-07-00)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
Nov 03, 2020 B.Morgan (exerrprop-V10-06-00)
|
||||
- Support same CMake version range as core Geant4
|
||||
|
||||
Jun 13, 2018 G.Cosmo (exerrprop-V10-04-00)
|
||||
- Use implicit destructor in ExErrorMagneticField.
|
||||
- Updated README.
|
||||
|
||||
Oct 16, 2014 I.Hrivnacova (exerrprop-V10-00-00)
|
||||
- Fixed coding guidelines (long lines) in errprop.cc, ExErrorDetectorConstruction.cc
|
||||
|
||||
Feb 13, 2013 I.Hrivnacova (exerrprop-V09-06-00)
|
||||
- Applied coding guidelines (virtual keyword, data member initialization)
|
||||
|
||||
Sep 4, 2012 I.Hrivnacova (exerrprop-V09-05-05)
|
||||
- Adding explicit includes of G4SystemOfUnits.hh and G4PhysicalConstants.hh
|
||||
where needed
|
||||
- Replaced tabulators with space characters
|
||||
|
||||
Sep 4, 2012 I.Hrivnacova (exerrprop-V09-05-04)
|
||||
- Updated CMakeLists.txt:
|
||||
adding copying macros (empty), install target and comment lines
|
||||
|
||||
Jul 17, 2012 I.Hrivnacova (exerrprop-V09-05-03)
|
||||
- Restored files descriptions and moved class descriptions in .hh
|
||||
at the right place
|
||||
|
||||
Jul 17, 2012 I.Hrivnacova (exerrprop-V09-05-02)
|
||||
- Improved .README file
|
||||
|
||||
Jul 6, 2012 P.Arce (exerrprop-V09-05-01)
|
||||
- Reviewed examples according to coding guidelines
|
||||
|
||||
Oct 3, 2011 G.Folger (exerrprop-V09-04-01)
|
||||
- Fix one left old style G4Exception.
|
||||
|
||||
Oct 3, 2011 G.Folger (exerrprop-V09-04-00)
|
||||
- Fix gcc46 compilation warning in errprop.cc
|
||||
|
||||
Mar 6, 2009 G.Barrand (exerrprop-V09-02-00)
|
||||
- GNUmakefile: removed logic for setting AIDA with G4ANALYSIS_USE.
|
||||
since it already handled in the internal configuration scripts.
|
||||
- Replaced usare of 'uint' with 'size_t' in errprop.cc (G.Cosmo).
|
||||
|
||||
May 28, 2007 P.Arce
|
||||
- First version
|
||||
@@ -0,0 +1,33 @@
|
||||
This is an example illustrating the use of the error propagation utility.
|
||||
|
||||
A G4ErrorFreeTrajState is created to simulate a muon track of 20 GeV along the X axis. Then the track is propagated until the target is reached.
|
||||
|
||||
The geometry is a simplified typical HEP detector:
|
||||
An air beamline ( BEAM )
|
||||
An air central detector ( CDET )
|
||||
A copper calorimeter, divided in four ( ECAL )
|
||||
An aluminium calorimeter, divided in ten ( HCAL )
|
||||
An air muon detector ( MUON )
|
||||
|
||||
It is inmersed in a magnetic field along the Z axis with default value -1 kilogauss. This value can be changed with the command "/exerror/setField.
|
||||
|
||||
|
||||
The type of target can be chosen with the enviromental variable G4ERROR_TARGET:
|
||||
|
||||
PLANE_SURFACE : use a G4ErrorPlaneSurfaceTarget perpendicular to X at (2241. mm, 0, 0)
|
||||
CYL_SURFACE : use a G4ErrorCylSurfaceTarget parallel to Z of radius 2220 mm
|
||||
VOLUME : use a G4ErrorGeomVolumeTarget with volume name "MUON"
|
||||
TRKLEN : use a G4ErrorTrackLengthTarget with track length 2230 mm
|
||||
|
||||
|
||||
The user may also choose if the propagation is done forwards (the natural way, loosing energy) or backwards (in opposite direction, gaining energy), with the enviromental variable G4ERROR_MODE:
|
||||
|
||||
FORWARDS : propagate in the forward direction
|
||||
BACKWARDS : propagate in the backward direction
|
||||
|
||||
|
||||
There are also two modes of propagation, that can be chosen with the enviromental variable G4ERROR_PROP
|
||||
|
||||
UNTIL_TARGET : propagate until target, all steps in one go
|
||||
STEP_BY_STEP propagate until target, returning control to the user at each step
|
||||
|
||||
@@ -0,0 +1,260 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/errProp.cc
|
||||
/// \brief Main program of the errorpropagation example
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 example main
|
||||
// ------------------------------------------------------------
|
||||
//
|
||||
// History:
|
||||
// - Created: P. Arce May 2007
|
||||
//
|
||||
|
||||
#include "ExErrorDetectorConstruction.hh"
|
||||
#include "G4SteppingVerbose.hh"
|
||||
|
||||
#include "G4ErrorPropagator.hh"
|
||||
#include "G4ErrorPropagatorData.hh"
|
||||
#include "G4ErrorPropagatorManager.hh"
|
||||
#include "G4ErrorPlaneSurfaceTarget.hh"
|
||||
#include "G4ErrorCylSurfaceTarget.hh"
|
||||
#include "G4ErrorGeomVolumeTarget.hh"
|
||||
#include "G4ErrorTrackLengthTarget.hh"
|
||||
#include "G4ErrorFreeTrajState.hh"
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
void Initialize();
|
||||
G4ErrorTarget* BuildTarget( G4int iTarget );
|
||||
void ProcessEvent( G4int iProp, size_t nEv );
|
||||
void Finalize();
|
||||
|
||||
G4ErrorTarget* theTarget;
|
||||
G4ErrorMode theG4ErrorMode;
|
||||
|
||||
//-------------------------------------------------------------
|
||||
int main()
|
||||
{
|
||||
|
||||
Initialize();
|
||||
|
||||
//----- Choose propagation mode
|
||||
// 0: propagate until target, all steps in one go
|
||||
// 1: propagate until target, returning control to the user at each step
|
||||
G4int iProp = 0;
|
||||
char* prop = std::getenv("G4ERROR_PROP");
|
||||
if( prop ) {
|
||||
if( G4String(prop) == G4String("UNTIL_TARGET") ){
|
||||
iProp = 0;
|
||||
} else if ( G4String(prop) == G4String("STEP_BY_STEP") ) {
|
||||
iProp = 1;
|
||||
} else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
FatalErrorInArgument,
|
||||
G4String("Variable G4ERROR_PROP = " + G4String(prop) +
|
||||
" It must be: UNTIL_TARGET or STEP_BY_STEP").c_str());
|
||||
}
|
||||
} else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
JustWarning,
|
||||
"Variable G4ERROR_PROP not defined, taking it = UNTIL_TARGET");
|
||||
}
|
||||
|
||||
size_t nEvents = 3;
|
||||
for( size_t ii = 0; ii < nEvents; ii++ ){
|
||||
ProcessEvent( iProp, ii );
|
||||
}
|
||||
|
||||
Finalize();
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------
|
||||
void Initialize()
|
||||
{
|
||||
G4VSteppingVerbose::SetInstance(new G4SteppingVerbose);
|
||||
|
||||
// Initialize the GEANT4e manager
|
||||
G4ErrorPropagatorManager* g4emgr
|
||||
= G4ErrorPropagatorManager::GetErrorPropagatorManager();
|
||||
G4ErrorPropagatorData* g4edata
|
||||
= G4ErrorPropagatorData::GetErrorPropagatorData();
|
||||
|
||||
g4emgr->SetUserInitialization(new ExErrorDetectorConstruction);
|
||||
|
||||
G4UImanager::GetUIpointer()->ApplyCommand("/exerror/setField -10. kilogauss");
|
||||
|
||||
g4emgr->InitGeant4e();
|
||||
|
||||
G4UImanager::GetUIpointer()->ApplyCommand("/control/verbose 1");
|
||||
G4UImanager::GetUIpointer()->ApplyCommand("/tracking/verbose 1");
|
||||
G4UImanager::GetUIpointer()->ApplyCommand("/geant4e/limits/stepLength 100 mm");
|
||||
|
||||
//----- Choose target type:
|
||||
// 1: PlaneSurfaceTarget
|
||||
// 2: CylSurfaceTarget
|
||||
// 3: GeomVolumeTarget
|
||||
// 4: TrackLengthTarget
|
||||
G4int iTarget = 1;
|
||||
char* target = std::getenv("G4ERROR_TARGET");
|
||||
if( target ) {
|
||||
if( G4String(target) == G4String("PLANE_SURFACE") ) {
|
||||
iTarget = 1;
|
||||
}else if( G4String(target) == G4String("CYL_SURFACE") ) {
|
||||
iTarget = 2;
|
||||
}else if( G4String(target) == G4String("VOLUME") ) {
|
||||
iTarget = 3;
|
||||
}else if( G4String(target) == G4String("TRKLEN") ) {
|
||||
iTarget = 4;
|
||||
}else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
FatalErrorInArgument,
|
||||
G4String("Variable G4ERROR_TARGET = " + G4String(target) +
|
||||
" It must be: PLANE_SURFACE, CYL_SURFACE, VOLUME, TRKLEN").c_str());
|
||||
}
|
||||
} else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
JustWarning,"Variable G4ERROR_TARGET not defined, taking it = PLANE_SURFACE");
|
||||
}
|
||||
|
||||
theTarget = BuildTarget( iTarget );
|
||||
g4edata->SetTarget( theTarget );
|
||||
|
||||
theG4ErrorMode = G4ErrorMode_PropBackwards;
|
||||
char* mode = std::getenv("G4ERROR_MODE");
|
||||
if( mode ) {
|
||||
if( G4String(mode) == G4String("FORWARDS") ) {
|
||||
theG4ErrorMode = G4ErrorMode_PropForwards;
|
||||
} else if( G4String(mode) == G4String("BACKWARDS") ) {
|
||||
theG4ErrorMode = G4ErrorMode_PropBackwards;
|
||||
} else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
FatalErrorInArgument,
|
||||
G4String("Variable G4ERROR_MODE = " + G4String(mode) +
|
||||
" It must be: FORWARDS or BACKWARDS").c_str());
|
||||
}
|
||||
} else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
JustWarning,"Variable G4ERROR_MODE not defined, taking it = BACKWARDS");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void ProcessEvent( G4int iProp, size_t )
|
||||
{
|
||||
|
||||
// Set the starting trajectory.
|
||||
G4ThreeVector xv3( 0, 0, 0 );
|
||||
G4ThreeVector pv3( 20.0*GeV, 0.0, 0.0 );
|
||||
G4ErrorTrajErr error( 5, 0 );
|
||||
G4ErrorFreeTrajState* g4ErrorTrajState
|
||||
= new G4ErrorFreeTrajState( "mu-", xv3, pv3, error );
|
||||
|
||||
G4ErrorPropagatorManager* g4emgr
|
||||
= G4ErrorPropagatorManager::GetErrorPropagatorManager();
|
||||
|
||||
//int ierr = 0;
|
||||
|
||||
G4Point3D surfPos(224.*cm,0.,0.);
|
||||
G4Normal3D surfNorm(1.,0.,0.);
|
||||
//- G4ErrorTarget* theG4ErrorTarget
|
||||
// = new G4ErrorPlaneSurfaceTarget(surfNorm, surfPos );
|
||||
|
||||
if( iProp == 0){
|
||||
// Propagate until G4ErrorTarget is found all in one go
|
||||
//ierr =
|
||||
g4emgr->Propagate( g4ErrorTrajState, theTarget, theG4ErrorMode );
|
||||
} else if( iProp == 1){
|
||||
|
||||
// Propagate until G4ErrorTarget is reached step by step
|
||||
|
||||
g4emgr->InitTrackPropagation();
|
||||
|
||||
// G4Track* aTrack
|
||||
// = G4EventManager::GetEventManager()->GetTrackingManager()->GetTrack();
|
||||
bool moreEvt = TRUE;
|
||||
while( moreEvt ){
|
||||
|
||||
//ierr =
|
||||
g4emgr->PropagateOneStep( g4ErrorTrajState, theG4ErrorMode );
|
||||
|
||||
//---- Check if target is reached
|
||||
if( g4emgr->GetPropagator()->CheckIfLastStep( g4ErrorTrajState->GetG4Track() )) {
|
||||
g4emgr->GetPropagator()
|
||||
->InvokePostUserTrackingAction( g4ErrorTrajState->GetG4Track() );
|
||||
moreEvt = 0;
|
||||
G4cout << "STEP_BY_STEP propagation: Last Step " << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
G4cout << " $$$ PROPAGATION ENDED " << G4endl;
|
||||
// extract current state info
|
||||
G4Point3D posEnd = g4ErrorTrajState->GetPosition();
|
||||
G4Normal3D momEnd = g4ErrorTrajState->GetMomentum();
|
||||
G4ErrorTrajErr errorEnd = g4ErrorTrajState->GetError();
|
||||
|
||||
G4cout << " Position: " << posEnd << G4endl
|
||||
<< " Momentum: " << momEnd << G4endl
|
||||
<< " Error: " << errorEnd << G4endl;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------
|
||||
G4ErrorTarget* BuildTarget( G4int iTarget )
|
||||
{
|
||||
|
||||
G4ErrorTarget* target = 0;
|
||||
if( iTarget == 1 ) {
|
||||
G4Point3D surfPos(221.*cm,0.,0.);
|
||||
G4Normal3D surfNorm(1.,0.,0.);
|
||||
target = new G4ErrorPlaneSurfaceTarget(surfNorm, surfPos );
|
||||
}else if( iTarget == 2 ) {
|
||||
G4double radius = 222*cm;
|
||||
target = new G4ErrorCylSurfaceTarget(radius);
|
||||
}else if( iTarget == 3 ) {
|
||||
target = new G4ErrorGeomVolumeTarget("MUON");
|
||||
}else if( iTarget == 4 ) {
|
||||
target = new G4ErrorTrackLengthTarget(223.*cm);
|
||||
}else {
|
||||
G4Exception("exG4eReco","Fatal error in Argument",
|
||||
FatalErrorInArgument,"Target type has to be between 1 and 4");
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------
|
||||
void Finalize()
|
||||
{
|
||||
G4ErrorPropagatorManager::GetErrorPropagatorManager()->CloseGeometry();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,415 @@
|
||||
|
||||
############################################
|
||||
!!! WARNING - FPE detection is activated !!!
|
||||
############################################
|
||||
|
||||
|
||||
################################
|
||||
!!! G4Backtrace is activated !!!
|
||||
################################
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-01-ref-00 (9-December-2022)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
: NIM A 835 (2016), 186-225
|
||||
WWW : http://geant4.org/
|
||||
**************************************************************
|
||||
|
||||
creating G4RunManagerKernel 0x24ca110
|
||||
|
||||
The materials defined are :
|
||||
|
||||
|
||||
***** Table : Nb of materials = 4 *****
|
||||
|
||||
Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Nucl.Int.Length: 710.095 m
|
||||
Imean: 85.700 eV temperature: 293.15 K pressure: 1.00 atm
|
||||
|
||||
---> Element: C (C) Z = 6.0 N = 12 A = 12.011 g/mole
|
||||
---> Isotope: C12 Z = 6 N = 12 A = 12.00 g/mole abundance: 98.930 %
|
||||
---> Isotope: C13 Z = 6 N = 13 A = 13.00 g/mole abundance: 1.070 %
|
||||
ElmMassFraction: 0.01 % ElmAbundance 0.02 %
|
||||
|
||||
---> Element: N (N) Z = 7.0 N = 14 A = 14.007 g/mole
|
||||
---> Isotope: N14 Z = 7 N = 14 A = 14.00 g/mole abundance: 99.632 %
|
||||
---> Isotope: N15 Z = 7 N = 15 A = 15.00 g/mole abundance: 0.368 %
|
||||
ElmMassFraction: 75.53 % ElmAbundance 78.44 %
|
||||
|
||||
---> Element: O (O) Z = 8.0 N = 16 A = 15.999 g/mole
|
||||
---> Isotope: O16 Z = 8 N = 16 A = 15.99 g/mole abundance: 99.757 %
|
||||
---> Isotope: O17 Z = 8 N = 17 A = 17.00 g/mole abundance: 0.038 %
|
||||
---> Isotope: O18 Z = 8 N = 18 A = 18.00 g/mole abundance: 0.205 %
|
||||
ElmMassFraction: 23.18 % ElmAbundance 21.07 %
|
||||
|
||||
---> Element: Ar (Ar) Z = 18.0 N = 40 A = 39.948 g/mole
|
||||
---> Isotope: Ar36 Z = 18 N = 36 A = 35.97 g/mole abundance: 0.337 %
|
||||
---> Isotope: Ar38 Z = 18 N = 38 A = 37.96 g/mole abundance: 0.063 %
|
||||
---> Isotope: Ar40 Z = 18 N = 40 A = 39.96 g/mole abundance: 99.600 %
|
||||
ElmMassFraction: 1.28 % ElmAbundance 0.47 %
|
||||
|
||||
|
||||
Material: G4_Al density: 2.699 g/cm3 RadL: 8.896 cm Nucl.Int.Length: 38.894 cm
|
||||
Imean: 166.000 eV temperature: 293.15 K pressure: 1.00 atm
|
||||
|
||||
---> Element: Al (Al) Z = 13.0 N = 27 A = 26.982 g/mole
|
||||
---> Isotope: Al27 Z = 13 N = 27 A = 26.98 g/mole abundance: 100.000 %
|
||||
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
|
||||
Material: G4_Fe density: 7.874 g/cm3 RadL: 1.757 cm Nucl.Int.Length: 16.990 cm
|
||||
Imean: 286.000 eV temperature: 293.15 K pressure: 1.00 atm
|
||||
|
||||
---> Element: Fe (Fe) Z = 26.0 N = 56 A = 55.845 g/mole
|
||||
---> Isotope: Fe54 Z = 26 N = 54 A = 53.94 g/mole abundance: 5.845 %
|
||||
---> Isotope: Fe56 Z = 26 N = 56 A = 55.93 g/mole abundance: 91.754 %
|
||||
---> Isotope: Fe57 Z = 26 N = 57 A = 56.94 g/mole abundance: 2.119 %
|
||||
---> Isotope: Fe58 Z = 26 N = 58 A = 57.93 g/mole abundance: 0.282 %
|
||||
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
|
||||
Material: G4_Cu density: 8.960 g/cm3 RadL: 1.436 cm Nucl.Int.Length: 15.588 cm
|
||||
Imean: 322.000 eV temperature: 293.15 K pressure: 1.00 atm
|
||||
|
||||
---> Element: Cu (Cu) Z = 29.0 N = 64 A = 63.546 g/mole
|
||||
---> Isotope: Cu63 Z = 29 N = 63 A = 62.93 g/mole abundance: 69.170 %
|
||||
---> Isotope: Cu65 Z = 29 N = 65 A = 64.93 g/mole abundance: 30.830 %
|
||||
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
|
||||
|
||||
HalfWorldLength 2250
|
||||
World is registered to the default region.
|
||||
G4ErrorRunManagerHelper::InitializePhysics
|
||||
List of instantiated particles ============================================
|
||||
e+ e- gamma geantino mu+ mu- pi+ pi- proton
|
||||
Current application state is PreInit
|
||||
Warning : Geant4 kernel is not Init state : Assuming Init state.
|
||||
physicsList->Construct() start.
|
||||
G4Transportation constructor> set fShortStepOptimisation to false
|
||||
0x277dfe0G4ErrorPhysicsList:: particle process manager e+ = 0x2782cf0
|
||||
0x277de40G4ErrorPhysicsList:: particle process manager e- = 0x27872b0
|
||||
0x277dca0G4ErrorPhysicsList:: particle process manager gamma = 0x27873e0
|
||||
0x277f320G4ErrorPhysicsList:: particle process manager geantino = 0x2787630
|
||||
0x277e180G4ErrorPhysicsList:: particle process manager mu+ = 0x2787880
|
||||
0x277e470G4ErrorPhysicsList:: particle process manager mu- = 0x2787ad0
|
||||
0x277e880G4ErrorPhysicsList:: particle process manager pi+ = 0x2787d20
|
||||
0x277ecd0G4ErrorPhysicsList:: particle process manager pi- = 0x2787f70
|
||||
0x277f0f0G4ErrorPhysicsList:: particle process manager proton = 0x27881c0
|
||||
physicsList->CheckParticleList() start.
|
||||
physicsList->setCut() start.
|
||||
=======================================================================
|
||||
====== Electromagnetic Physics Parameters ========
|
||||
=======================================================================
|
||||
LPM effect enabled 1
|
||||
Enable creation and use of sampling tables 0
|
||||
Apply cuts on all EM processes 0
|
||||
Use combined TransportationWithMsc Disabled
|
||||
Use general process 0
|
||||
Enable linear polarisation for gamma 0
|
||||
Enable photoeffect sampling below K-shell 1
|
||||
Enable sampling of quantum entanglement 0
|
||||
X-section factor for integral approach 0.8
|
||||
Min kinetic energy for tables 100 eV
|
||||
Max kinetic energy for tables 100 TeV
|
||||
Number of bins per decade of a table 7
|
||||
Verbose level 1
|
||||
Verbose level for worker thread 0
|
||||
Bremsstrahlung energy threshold above which
|
||||
primary e+- is added to the list of secondary 100 TeV
|
||||
Bremsstrahlung energy threshold above which primary
|
||||
muon/hadron is added to the list of secondary 100 TeV
|
||||
Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
=======================================================================
|
||||
Step function for e+- (0.2, 1 mm)
|
||||
Step function for muons/hadrons (0.2, 0.1 mm)
|
||||
Step function for light ions (0.2, 0.1 mm)
|
||||
Step function for general ions (0.2, 0.1 mm)
|
||||
Lowest e+e- kinetic energy 1 keV
|
||||
Lowest muon/hadron kinetic energy 1 keV
|
||||
Use ICRU90 data 0
|
||||
Fluctuations of dE/dx are enabled 1
|
||||
Type of fluctuation model for leptons and hadrons Universal
|
||||
Use built-in Birks satuaration 0
|
||||
Build CSDA range enabled 0
|
||||
Use cut as a final range enabled 0
|
||||
Enable angular generator interface 0
|
||||
Max kinetic energy for CSDA tables 1 GeV
|
||||
Max kinetic energy for NIEL computation 0 eV
|
||||
Linear loss limit 0.01
|
||||
Read data from file for e+e- pair production by mu 0
|
||||
=======================================================================
|
||||
====== Multiple Scattering Parameters ========
|
||||
=======================================================================
|
||||
Type of msc step limit algorithm for e+- 1
|
||||
Type of msc step limit algorithm for muons/hadrons 0
|
||||
Msc lateral displacement for e+- enabled 1
|
||||
Msc lateral displacement for muons and hadrons 0
|
||||
Urban msc model lateral displacement alg96 1
|
||||
Range factor for msc step limit for e+- 0.04
|
||||
Range factor for msc step limit for muons/hadrons 0.2
|
||||
Geometry factor for msc step limitation of e+- 2.5
|
||||
Safety factor for msc step limit for e+- 0.6
|
||||
Skin parameter for msc step limitation of e+- 1
|
||||
Lambda limit for msc step limit for e+- 1 mm
|
||||
Use Mott correction for e- scattering 0
|
||||
Factor used for dynamic computation of angular
|
||||
limit between single and multiple scattering 1
|
||||
Fixed angular limit between single
|
||||
and multiple scattering 3.1416 rad
|
||||
Upper energy limit for e+- multiple scattering 100 MeV
|
||||
Type of electron single scattering model 0
|
||||
Type of nuclear form-factor 1
|
||||
Screening factor 1
|
||||
=======================================================================
|
||||
|
||||
conv: for gamma SubType=14 BuildTable=1
|
||||
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
|
||||
|
||||
compt: for gamma SubType=13 BuildTable=1
|
||||
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
|
||||
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
phot: for gamma SubType=12 BuildTable=0
|
||||
LambdaPrime table from 200 keV to 100 TeV in 61 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PhotoElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- -- appears in <World> world volume
|
||||
This region is in the mass world.
|
||||
Root logical volume(s) : World
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials : G4_AIR G4_Cu G4_Al G4_Fe
|
||||
Production cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
|
||||
Region <DefaultRegionForParallelWorld> -- -- is not associated to any world.
|
||||
Root logical volume(s) :
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials :
|
||||
Production cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
|
||||
========= Table of registered couples ============================
|
||||
|
||||
Index : 0 used in the geometry : Yes
|
||||
Material : G4_AIR
|
||||
Range cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
Energy thresholds : gamma 9.54965 GeV e- 9.54965 GeV e+ 9.54965 GeV proton 1 PeV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 1 used in the geometry : Yes
|
||||
Material : G4_Cu
|
||||
Range cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
Energy thresholds : gamma 9.54965 GeV e- 9.54965 GeV e+ 9.54965 GeV proton 1 PeV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 2 used in the geometry : Yes
|
||||
Material : G4_Al
|
||||
Range cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
Energy thresholds : gamma 9.54965 GeV e- 9.54965 GeV e+ 9.54965 GeV proton 1 PeV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 3 used in the geometry : Yes
|
||||
Material : G4_Fe
|
||||
Range cuts : gamma 10000 km e- 10000 km e+ 10000 km proton 10000 km
|
||||
Energy thresholds : gamma 9.54965 GeV e- 9.54965 GeV e+ 9.54965 GeV proton 1 PeV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
==================================================================
|
||||
|
||||
Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 1 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
0.00 0.00 0.00 1k World
|
||||
0.00 0.00 0.00 0k ECAL
|
||||
0.00 0.00 0.00 1k HCAL
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
44.50 0k 3 8 18 0.00 World
|
||||
37.80 0k 1 10 10 0.00 HCAL
|
||||
17.70 0k 1 4 4 0.00 ECAL
|
||||
/tracking/verbose 1
|
||||
/geant4e/limits/stepLength 100 mm
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 0 0 0 1.99e+04 0 0 0 BEAM initStep
|
||||
### G4EnergyLossForExtrapolator::Initialisation tables= 0
|
||||
G4TablesForExtrapolator::ComputeElectronDEDX for e-
|
||||
G4TablesForExtrapolator::ComputeElectronDEDX for e+
|
||||
G4TablesForExtrapolator::ComputeMuonDEDX for mu+
|
||||
G4TablesForExtrapolator::ComputeProtonDEDX for proton
|
||||
G4TablesForExtrapolator::ComputeTransportXS for e-
|
||||
### G4EnergyLossForExtrapolator::BuildTables for 4 materials Nbins= 80 Emin(MeV)= 1 Emax(MeV)= 1e+08
|
||||
1 50 0.0187 0 1.99e+04 0.0167 50 50 CDET Transportation
|
||||
2 150 0.169 0 1.99e+04 0.0333 100 150 CDET G4ErrorStepLengthLimit
|
||||
3 250 0.468 0 1.99e+04 0.0333 100 250 CDET G4ErrorStepLengthLimit
|
||||
4 250 0.468 0 1.99e+04 1.94e-07 0.00058 250 DVEC Transportation
|
||||
5 350 0.918 0 2.01e+04 183 100 350 DVEC G4ErrorStepLengthLimit
|
||||
6 350 0.918 0 2.01e+04 0.00187 0.00102 350 DVEC Transportation
|
||||
7 450 1.52 0 2.03e+04 183 100 450 DVEC G4ErrorStepLengthLimit
|
||||
8 450 1.52 0 2.03e+04 0.00328 0.00179 450 DVEC Transportation
|
||||
9 550 2.26 0 2.04e+04 183 100 550 DVEC G4ErrorStepLengthLimit
|
||||
10 550 2.26 0 2.04e+04 0.00509 0.00278 550 DVEC Transportation
|
||||
11 650 3.15 0 2.06e+04 183 100 650 DVEC G4ErrorStepLengthLimit
|
||||
12 650 3.15 0 2.06e+04 0.00727 0.00396 650 SOLN Transportation
|
||||
13 750 4.18 0 2.07e+04 59.6 100 750 SOLN G4ErrorStepLengthLimit
|
||||
14 750 4.18 0 2.07e+04 0.00319 0.00535 750 DVEH Transportation
|
||||
15 850 5.36 0 2.09e+04 165 100 850 DVEH G4ErrorStepLengthLimit
|
||||
16 850 5.36 0 2.09e+04 0.0114 0.00694 850 DVEH Transportation
|
||||
17 950 6.68 0 2.1e+04 165 100 950 DVEH G4ErrorStepLengthLimit
|
||||
18 950 6.68 0 2.1e+04 0.0144 0.00872 950 DVEH Transportation
|
||||
19 1.05e+03 8.14 0 2.12e+04 165 100 1.05e+03 DVEH G4ErrorStepLengthLimit
|
||||
20 1.05e+03 8.14 0 2.12e+04 0.0176 0.0107 1.05e+03 DVEH Transportation
|
||||
21 1.15e+03 9.74 0 2.13e+04 165 100 1.15e+03 DVEH G4ErrorStepLengthLimit
|
||||
22 1.15e+03 9.74 0 2.13e+04 0.0212 0.0128 1.15e+03 DVEH Transportation
|
||||
23 1.25e+03 11.5 0 2.15e+04 165 100 1.25e+03 DVEH G4ErrorStepLengthLimit
|
||||
24 1.25e+03 11.5 0 2.15e+04 0.0251 0.0152 1.25e+03 DVEH Transportation
|
||||
25 1.35e+03 13.4 0 2.17e+04 165 100 1.35e+03 DVEH G4ErrorStepLengthLimit
|
||||
26 1.35e+03 13.4 0 2.17e+04 0.0292 0.0177 1.35e+03 DVEH Transportation
|
||||
27 1.45e+03 15.4 0 2.18e+04 165 100 1.45e+03 DVEH G4ErrorStepLengthLimit
|
||||
28 1.45e+03 15.4 0 2.18e+04 0.0337 0.0203 1.45e+03 DVEH Transportation
|
||||
29 1.55e+03 17.5 0 2.2e+04 166 100 1.55e+03 DVEH G4ErrorStepLengthLimit
|
||||
30 1.55e+03 17.5 0 2.2e+04 0.0384 0.0232 1.55e+03 DVEH Transportation
|
||||
31 1.65e+03 19.8 0 2.22e+04 166 100 1.65e+03 DVEH G4ErrorStepLengthLimit
|
||||
32 1.65e+03 19.8 0 2.22e+04 0.0434 0.0262 1.65e+03 DVEH Transportation
|
||||
33 1.75e+03 22.2 0 2.23e+04 166 100 1.75e+03 DVEH G4ErrorStepLengthLimit
|
||||
34 1.75e+03 22.2 0 2.23e+04 0.0487 0.0293 1.75e+03 MUON Transportation
|
||||
35 1.85e+03 24.8 0 2.23e+04 0.0336 100 1.85e+03 MUON G4ErrorStepLengthLimit
|
||||
36 1.95e+03 27.5 0 2.23e+04 0.0336 100 1.95e+03 MUON G4ErrorStepLengthLimit
|
||||
37 2.05e+03 30.3 0 2.23e+04 0.0336 100 2.05e+03 MUON G4ErrorStepLengthLimit
|
||||
38 2.15e+03 33.3 0 2.23e+04 0.0336 100 2.15e+03 MUON G4ErrorStepLengthLimit
|
||||
39 2.21e+03 35.1 0 2.23e+04 0.0202 60.2 2.21e+03 MUON Transportation
|
||||
$$$ PROPAGATION ENDED
|
||||
Position: (2210,35.10134103703911,0)
|
||||
Momentum: (22433.70312107119,696.1889753558929,0)
|
||||
Error:
|
||||
9.873297961869803e-08 0 3.726946525342548e-08 2.667645643729908e-06 0
|
||||
0 3.518754725736791e-05 0 0 0.004070098790523185
|
||||
3.726946525342548e-08 0 3.519222148196891e-05 0.004422001644952241 0
|
||||
2.667645643729908e-06 0 0.004422001644952241 0.6258743853977757 0
|
||||
0 0.004070098790523185 0 0 0.54095727675807
|
||||
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 0 0 0 1.99e+04 0 0 0 BEAM initStep
|
||||
1 50 0.0187 0 1.99e+04 0.0167 50 50 CDET Transportation
|
||||
2 150 0.169 0 1.99e+04 0.0333 100 150 CDET G4ErrorStepLengthLimit
|
||||
3 250 0.468 0 1.99e+04 0.0333 100 250 CDET G4ErrorStepLengthLimit
|
||||
4 250 0.468 0 1.99e+04 1.94e-07 0.00058 250 DVEC Transportation
|
||||
5 350 0.918 0 2.01e+04 183 100 350 DVEC G4ErrorStepLengthLimit
|
||||
6 350 0.918 0 2.01e+04 0.00187 0.00102 350 DVEC Transportation
|
||||
7 450 1.52 0 2.03e+04 183 100 450 DVEC G4ErrorStepLengthLimit
|
||||
8 450 1.52 0 2.03e+04 0.00328 0.00179 450 DVEC Transportation
|
||||
9 550 2.26 0 2.04e+04 183 100 550 DVEC G4ErrorStepLengthLimit
|
||||
10 550 2.26 0 2.04e+04 0.00509 0.00278 550 DVEC Transportation
|
||||
11 650 3.15 0 2.06e+04 183 100 650 DVEC G4ErrorStepLengthLimit
|
||||
12 650 3.15 0 2.06e+04 0.00727 0.00396 650 SOLN Transportation
|
||||
13 750 4.18 0 2.07e+04 59.6 100 750 SOLN G4ErrorStepLengthLimit
|
||||
14 750 4.18 0 2.07e+04 0.00319 0.00535 750 DVEH Transportation
|
||||
15 850 5.36 0 2.09e+04 165 100 850 DVEH G4ErrorStepLengthLimit
|
||||
16 850 5.36 0 2.09e+04 0.0114 0.00694 850 DVEH Transportation
|
||||
17 950 6.68 0 2.1e+04 165 100 950 DVEH G4ErrorStepLengthLimit
|
||||
18 950 6.68 0 2.1e+04 0.0144 0.00872 950 DVEH Transportation
|
||||
19 1.05e+03 8.14 0 2.12e+04 165 100 1.05e+03 DVEH G4ErrorStepLengthLimit
|
||||
20 1.05e+03 8.14 0 2.12e+04 0.0176 0.0107 1.05e+03 DVEH Transportation
|
||||
21 1.15e+03 9.74 0 2.13e+04 165 100 1.15e+03 DVEH G4ErrorStepLengthLimit
|
||||
22 1.15e+03 9.74 0 2.13e+04 0.0212 0.0128 1.15e+03 DVEH Transportation
|
||||
23 1.25e+03 11.5 0 2.15e+04 165 100 1.25e+03 DVEH G4ErrorStepLengthLimit
|
||||
24 1.25e+03 11.5 0 2.15e+04 0.0251 0.0152 1.25e+03 DVEH Transportation
|
||||
25 1.35e+03 13.4 0 2.17e+04 165 100 1.35e+03 DVEH G4ErrorStepLengthLimit
|
||||
26 1.35e+03 13.4 0 2.17e+04 0.0292 0.0177 1.35e+03 DVEH Transportation
|
||||
27 1.45e+03 15.4 0 2.18e+04 165 100 1.45e+03 DVEH G4ErrorStepLengthLimit
|
||||
28 1.45e+03 15.4 0 2.18e+04 0.0337 0.0203 1.45e+03 DVEH Transportation
|
||||
29 1.55e+03 17.5 0 2.2e+04 166 100 1.55e+03 DVEH G4ErrorStepLengthLimit
|
||||
30 1.55e+03 17.5 0 2.2e+04 0.0384 0.0232 1.55e+03 DVEH Transportation
|
||||
31 1.65e+03 19.8 0 2.22e+04 166 100 1.65e+03 DVEH G4ErrorStepLengthLimit
|
||||
32 1.65e+03 19.8 0 2.22e+04 0.0434 0.0262 1.65e+03 DVEH Transportation
|
||||
33 1.75e+03 22.2 0 2.23e+04 166 100 1.75e+03 DVEH G4ErrorStepLengthLimit
|
||||
34 1.75e+03 22.2 0 2.23e+04 0.0487 0.0293 1.75e+03 MUON Transportation
|
||||
35 1.85e+03 24.8 0 2.23e+04 0.0336 100 1.85e+03 MUON G4ErrorStepLengthLimit
|
||||
36 1.95e+03 27.5 0 2.23e+04 0.0336 100 1.95e+03 MUON G4ErrorStepLengthLimit
|
||||
37 2.05e+03 30.3 0 2.23e+04 0.0336 100 2.05e+03 MUON G4ErrorStepLengthLimit
|
||||
38 2.15e+03 33.3 0 2.23e+04 0.0336 100 2.15e+03 MUON G4ErrorStepLengthLimit
|
||||
39 2.21e+03 35.1 0 2.23e+04 0.0202 60.2 2.21e+03 MUON Transportation
|
||||
$$$ PROPAGATION ENDED
|
||||
Position: (2210,35.10134103703911,0)
|
||||
Momentum: (22433.70312107119,696.1889753558929,0)
|
||||
Error:
|
||||
9.873297961869803e-08 0 3.726946525342548e-08 2.667645643729908e-06 0
|
||||
0 3.518754725736791e-05 0 0 0.004070098790523185
|
||||
3.726946525342548e-08 0 3.519222148196891e-05 0.004422001644952241 0
|
||||
2.667645643729908e-06 0 0.004422001644952241 0.6258743853977757 0
|
||||
0 0.004070098790523185 0 0 0.54095727675807
|
||||
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 0 0 0 1.99e+04 0 0 0 BEAM initStep
|
||||
1 50 0.0187 0 1.99e+04 0.0167 50 50 CDET Transportation
|
||||
2 150 0.169 0 1.99e+04 0.0333 100 150 CDET G4ErrorStepLengthLimit
|
||||
3 250 0.468 0 1.99e+04 0.0333 100 250 CDET G4ErrorStepLengthLimit
|
||||
4 250 0.468 0 1.99e+04 1.94e-07 0.00058 250 DVEC Transportation
|
||||
5 350 0.918 0 2.01e+04 183 100 350 DVEC G4ErrorStepLengthLimit
|
||||
6 350 0.918 0 2.01e+04 0.00187 0.00102 350 DVEC Transportation
|
||||
7 450 1.52 0 2.03e+04 183 100 450 DVEC G4ErrorStepLengthLimit
|
||||
8 450 1.52 0 2.03e+04 0.00328 0.00179 450 DVEC Transportation
|
||||
9 550 2.26 0 2.04e+04 183 100 550 DVEC G4ErrorStepLengthLimit
|
||||
10 550 2.26 0 2.04e+04 0.00509 0.00278 550 DVEC Transportation
|
||||
11 650 3.15 0 2.06e+04 183 100 650 DVEC G4ErrorStepLengthLimit
|
||||
12 650 3.15 0 2.06e+04 0.00727 0.00396 650 SOLN Transportation
|
||||
13 750 4.18 0 2.07e+04 59.6 100 750 SOLN G4ErrorStepLengthLimit
|
||||
14 750 4.18 0 2.07e+04 0.00319 0.00535 750 DVEH Transportation
|
||||
15 850 5.36 0 2.09e+04 165 100 850 DVEH G4ErrorStepLengthLimit
|
||||
16 850 5.36 0 2.09e+04 0.0114 0.00694 850 DVEH Transportation
|
||||
17 950 6.68 0 2.1e+04 165 100 950 DVEH G4ErrorStepLengthLimit
|
||||
18 950 6.68 0 2.1e+04 0.0144 0.00872 950 DVEH Transportation
|
||||
19 1.05e+03 8.14 0 2.12e+04 165 100 1.05e+03 DVEH G4ErrorStepLengthLimit
|
||||
20 1.05e+03 8.14 0 2.12e+04 0.0176 0.0107 1.05e+03 DVEH Transportation
|
||||
21 1.15e+03 9.74 0 2.13e+04 165 100 1.15e+03 DVEH G4ErrorStepLengthLimit
|
||||
22 1.15e+03 9.74 0 2.13e+04 0.0212 0.0128 1.15e+03 DVEH Transportation
|
||||
23 1.25e+03 11.5 0 2.15e+04 165 100 1.25e+03 DVEH G4ErrorStepLengthLimit
|
||||
24 1.25e+03 11.5 0 2.15e+04 0.0251 0.0152 1.25e+03 DVEH Transportation
|
||||
25 1.35e+03 13.4 0 2.17e+04 165 100 1.35e+03 DVEH G4ErrorStepLengthLimit
|
||||
26 1.35e+03 13.4 0 2.17e+04 0.0292 0.0177 1.35e+03 DVEH Transportation
|
||||
27 1.45e+03 15.4 0 2.18e+04 165 100 1.45e+03 DVEH G4ErrorStepLengthLimit
|
||||
28 1.45e+03 15.4 0 2.18e+04 0.0337 0.0203 1.45e+03 DVEH Transportation
|
||||
29 1.55e+03 17.5 0 2.2e+04 166 100 1.55e+03 DVEH G4ErrorStepLengthLimit
|
||||
30 1.55e+03 17.5 0 2.2e+04 0.0384 0.0232 1.55e+03 DVEH Transportation
|
||||
31 1.65e+03 19.8 0 2.22e+04 166 100 1.65e+03 DVEH G4ErrorStepLengthLimit
|
||||
32 1.65e+03 19.8 0 2.22e+04 0.0434 0.0262 1.65e+03 DVEH Transportation
|
||||
33 1.75e+03 22.2 0 2.23e+04 166 100 1.75e+03 DVEH G4ErrorStepLengthLimit
|
||||
34 1.75e+03 22.2 0 2.23e+04 0.0487 0.0293 1.75e+03 MUON Transportation
|
||||
35 1.85e+03 24.8 0 2.23e+04 0.0336 100 1.85e+03 MUON G4ErrorStepLengthLimit
|
||||
36 1.95e+03 27.5 0 2.23e+04 0.0336 100 1.95e+03 MUON G4ErrorStepLengthLimit
|
||||
37 2.05e+03 30.3 0 2.23e+04 0.0336 100 2.05e+03 MUON G4ErrorStepLengthLimit
|
||||
38 2.15e+03 33.3 0 2.23e+04 0.0336 100 2.15e+03 MUON G4ErrorStepLengthLimit
|
||||
39 2.21e+03 35.1 0 2.23e+04 0.0202 60.2 2.21e+03 MUON Transportation
|
||||
$$$ PROPAGATION ENDED
|
||||
Position: (2210,35.10134103703911,0)
|
||||
Momentum: (22433.70312107119,696.1889753558929,0)
|
||||
Error:
|
||||
9.873297961869803e-08 0 3.726946525342548e-08 2.667645643729908e-06 0
|
||||
0 3.518754725736791e-05 0 0 0.004070098790523185
|
||||
3.726946525342548e-08 0 3.519222148196891e-05 0.004422001644952241 0
|
||||
2.667645643729908e-06 0 0.004422001644952241 0.6258743853977757 0
|
||||
0 0.004070098790523185 0 0 0.54095727675807
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/include/ExErrorDetectorConstruction.hh
|
||||
/// \brief Definition of the ExErrorDetectorConstruction class
|
||||
//
|
||||
|
||||
#ifndef ExErrorDetectorConstruction_hh
|
||||
#define ExErrorDetectorConstruction_hh 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "ExErrorMagneticField.hh"
|
||||
|
||||
class G4Box;
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4Material;
|
||||
class ExErrorDetectorMessenger;
|
||||
class G4UserLimits;
|
||||
|
||||
/// Detector construction class
|
||||
///
|
||||
/// Creates a simplified typical HEP detector:
|
||||
/// An air beamline ( BEAM )
|
||||
/// An air central detector ( CDET )
|
||||
/// A copper calorimeter, divided in four ( ECAL )
|
||||
/// An aluminium calorimeter, divided in ten ( HCAL )
|
||||
/// An air muon detector ( MUON )
|
||||
///
|
||||
/// History:
|
||||
/// Created: May 2007
|
||||
/// \author P. Arce
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
class ExErrorDetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
|
||||
ExErrorDetectorConstruction();
|
||||
~ExErrorDetectorConstruction();
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
|
||||
void SetMagField(G4double);
|
||||
|
||||
private:
|
||||
G4double fXBEAM;
|
||||
G4double fXCDET;
|
||||
G4double fXECAL;
|
||||
G4double fXSOLN;
|
||||
G4double fXHCAL;
|
||||
G4double fXMUON;
|
||||
G4double fNdivECAL;
|
||||
G4double fNdivHCAL;
|
||||
G4double fYZLength;
|
||||
G4double fXHalfWorldLength;
|
||||
|
||||
|
||||
G4UserLimits* fUserLimits;
|
||||
|
||||
ExErrorMagneticField* fMagField; // pointer to the magnetic field
|
||||
|
||||
ExErrorDetectorMessenger* fDetectorMessenger; // pointer to the Messenger
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/include/ExErrorDetectorMessenger.hh
|
||||
/// \brief Definition of the ExErrorDetectorMessenger class
|
||||
//
|
||||
|
||||
#ifndef ExErrorDetectorMessenger_hh
|
||||
#define ExErrorDetectorMessenger_hh 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class ExErrorDetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
/// Detector messenger class
|
||||
///
|
||||
/// Defines a G4UIcommand to set the value of the constant field
|
||||
///
|
||||
/// History:
|
||||
/// Created: May 2007
|
||||
/// \author P. Arce
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
class ExErrorDetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
ExErrorDetectorMessenger(ExErrorDetectorConstruction*);
|
||||
~ExErrorDetectorMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
ExErrorDetectorConstruction* fMyDetector;
|
||||
|
||||
G4UIdirectory* fMydetDir;
|
||||
G4UIcmdWithADoubleAndUnit* fFieldCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/include/ExErrorMagneticField.hh
|
||||
/// \brief Definition of the ExErrorMagneticField class
|
||||
//
|
||||
|
||||
#ifndef ExErrorMagneticField_H
|
||||
#define ExErrorMagneticField_H
|
||||
|
||||
#include "G4UniformMagField.hh"
|
||||
|
||||
class G4FieldManager;
|
||||
|
||||
/// Magnetic field class
|
||||
///
|
||||
/// A uniform 1 kilogauss field along the Z axis
|
||||
///
|
||||
/// History:
|
||||
/// Created: May 2007
|
||||
/// \author P. Arce
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
class ExErrorMagneticField: public G4UniformMagField
|
||||
{
|
||||
public:
|
||||
|
||||
ExErrorMagneticField(G4ThreeVector); // The value of the field
|
||||
ExErrorMagneticField(); // A zero field
|
||||
|
||||
//Set the field (0,0,fieldValue)
|
||||
void SetFieldValue(G4double fieldValue);
|
||||
void SetFieldValue(G4ThreeVector fieldVector);
|
||||
|
||||
protected:
|
||||
|
||||
// Find the global Field Manager
|
||||
G4FieldManager* GetGlobalFieldManager(); // static
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,246 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/src/ExErrorDetectorConstruction.cc
|
||||
/// \brief Implementation of the ExErrorDetectorConstruction class
|
||||
//
|
||||
|
||||
#include "ExErrorDetectorConstruction.hh"
|
||||
#include "ExErrorDetectorMessenger.hh"
|
||||
#include "ExErrorMagneticField.hh"
|
||||
|
||||
#include "G4NistManager.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
|
||||
#include "G4UserLimits.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
|
||||
#include "G4Colour.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorDetectorConstruction::ExErrorDetectorConstruction()
|
||||
: G4VUserDetectorConstruction(),
|
||||
fXBEAM(5.*cm), fXCDET(20.*cm), fXECAL(40.*cm), fXSOLN(10.*cm), fXHCAL(100.*cm),
|
||||
fXMUON(50.*cm), fNdivECAL(40./10.), fNdivHCAL(100./10.), fYZLength(50.*cm),
|
||||
fXHalfWorldLength(fXBEAM + fXCDET + fXECAL + fXSOLN + fXHCAL + fXMUON),
|
||||
fUserLimits(0), fMagField(0), fDetectorMessenger(0)
|
||||
{
|
||||
|
||||
// create UserLimits
|
||||
fUserLimits = new G4UserLimits();
|
||||
|
||||
fMagField = new ExErrorMagneticField(
|
||||
G4ThreeVector(0.*kilogauss,0.*kilogauss,-1.*kilogauss));
|
||||
fDetectorMessenger = new ExErrorDetectorMessenger(this);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorDetectorConstruction::~ExErrorDetectorConstruction()
|
||||
{
|
||||
delete fMagField;
|
||||
delete fDetectorMessenger;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
G4VPhysicalVolume* ExErrorDetectorConstruction::Construct()
|
||||
{
|
||||
//--------- Material definition ---------
|
||||
|
||||
//Vacuum
|
||||
/* a = 1.*g/mole;
|
||||
density = 1.E-9*g/cm3;
|
||||
G4Material* Vacuum = new G4Material(name="Vacuum", z=1., a, density);
|
||||
*/
|
||||
|
||||
G4NistManager* nistMgr = G4NistManager::Instance();
|
||||
G4Material* air = nistMgr->FindOrBuildMaterial("G4_AIR");
|
||||
//Al
|
||||
G4Material* al = nistMgr->FindOrBuildMaterial("G4_Al");
|
||||
//Fe
|
||||
G4Material* fe = nistMgr->FindOrBuildMaterial("G4_Fe");
|
||||
//Cu
|
||||
G4Material* cu = nistMgr->FindOrBuildMaterial("G4_Cu");
|
||||
|
||||
// Print all the materials defined.
|
||||
//
|
||||
G4cout << G4endl << "The materials defined are : " << G4endl << G4endl;
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
|
||||
//--- Sizes of the principal geometrical components (solids) --- (half lengths)
|
||||
//double fXBEAM = 5.*2.*cm;
|
||||
//double fXCDET = 90.*cm;
|
||||
//double fXECAL = 40.*cm;
|
||||
//double fXSOLN = 10.*cm;
|
||||
//double fXHCAL = 100.*cm;
|
||||
//double fXMUON = 50.*cm;
|
||||
//double fNdivECAL = 10;
|
||||
//double fNdivHCAL = 10;
|
||||
//double fYZLength = 100.*cm;
|
||||
|
||||
// double fXWorldLength= fXBEAM + fXCDET + fXECAL + fXSOLN + fXHCAL + fXMUON;
|
||||
|
||||
|
||||
//--------- Definitions of Solids, Logical Volumes, Physical Volumes ---------
|
||||
|
||||
//------------------------------
|
||||
// World
|
||||
//------------------------------
|
||||
//- G4double HalfWorldLength = fXWorldLength;
|
||||
G4cout << " HalfWorldLength " << fXHalfWorldLength << G4endl;
|
||||
|
||||
G4Box* solidWorld= new G4Box("world",fXHalfWorldLength,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicWorld= new G4LogicalVolume( solidWorld, air, "World", 0, 0, 0);
|
||||
// Must place the World Physical volume unrotated at (0,0,0).
|
||||
//
|
||||
G4VPhysicalVolume* physiWorld
|
||||
= new G4PVPlacement(0, // no rotation
|
||||
G4ThreeVector(), // at (0,0,0)
|
||||
"World", // its name
|
||||
logicWorld, // its logical volume
|
||||
0, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no field specific to volum
|
||||
|
||||
//------------------------------
|
||||
// BEAM
|
||||
//------------------------------
|
||||
G4Box* solidBEAM = new G4Box("BEAM",fXBEAM,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicBEAM = new G4LogicalVolume(solidBEAM,air,"BEAM",0,0,0);
|
||||
G4ThreeVector positionBEAM = G4ThreeVector(0.,0.,0.);
|
||||
//G4VPhysicalVolume* physiBEAM =
|
||||
new G4PVPlacement(0, // no rotation
|
||||
positionBEAM, // at (x,y,z)
|
||||
"BEAM", // its name
|
||||
logicBEAM, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
|
||||
//------------------------------
|
||||
// CDET (Central DETector)
|
||||
//------------------------------
|
||||
G4ThreeVector positionCdet = G4ThreeVector(fXBEAM + fXCDET/2.,0.,0.);
|
||||
G4Box* solidCDET = new G4Box("CDET",fXCDET/2.,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicCDET = new G4LogicalVolume(solidCDET,air,"Cdet",0,0,0);
|
||||
// G4VPhysicalVolume* physiCDET =
|
||||
new G4PVPlacement(0, // no rotation
|
||||
positionCdet, // at (x,y,z)
|
||||
"CDET", // its name
|
||||
logicCDET, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
|
||||
//------------------------------
|
||||
// ECAL
|
||||
//------------------------------
|
||||
G4ThreeVector positionECAL = G4ThreeVector(fXBEAM + fXCDET + fXECAL/2., 0., 0.);
|
||||
G4Box* solidECAL = new G4Box("ECAL",fXECAL/2.,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicECAL = new G4LogicalVolume(solidECAL,cu,"ECAL",0,0,0);
|
||||
G4VPhysicalVolume* physiECAL
|
||||
= new G4PVPlacement(0, // no rotation
|
||||
positionECAL, // at (x,y,z)
|
||||
"ECAL", // its name
|
||||
logicECAL, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
//--------- Divide it
|
||||
G4Box* solidECALdiv = new G4Box("ECAL",fXECAL/2./fNdivECAL,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicECALdiv = new G4LogicalVolume(solidECALdiv,cu,"ECALdiv",0,0,0);
|
||||
new G4PVReplica("DVEC", logicECALdiv, physiECAL,
|
||||
kXAxis, G4int(fNdivECAL), fXECAL/fNdivECAL);
|
||||
|
||||
|
||||
//------------------------------
|
||||
// SOLN
|
||||
//------------------------------
|
||||
G4ThreeVector positionSOLN
|
||||
= G4ThreeVector(fXBEAM + fXCDET + fXECAL + fXSOLN/2., 0., 0.);
|
||||
G4Box* solidSOLN = new G4Box("SOLN",fXSOLN/2.,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicSOLN = new G4LogicalVolume(solidSOLN,al,"SOLN",0,0,0);
|
||||
new G4PVPlacement(0, // no rotation
|
||||
positionSOLN, // at (x,y,z)
|
||||
"SOLN", // its name
|
||||
logicSOLN, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
|
||||
//------------------------------
|
||||
// HCAL
|
||||
//------------------------------
|
||||
G4ThreeVector positionHCAL = G4ThreeVector(fXBEAM + fXCDET + fXECAL + fXSOLN + fXHCAL/2., 0., 0.);
|
||||
G4Box* solidHCAL = new G4Box("HCAL",fXHCAL/2.,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicHCAL = new G4LogicalVolume(solidHCAL,fe,"HCAL",0,0,0);
|
||||
G4VPhysicalVolume* physiHCAL
|
||||
= new G4PVPlacement(0, // no rotation
|
||||
positionHCAL, // at (x,y,z)
|
||||
"HCAL", // its name
|
||||
logicHCAL, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
//--------- Divide it
|
||||
G4Box* solidHCALdiv = new G4Box("HCAL",fXHCAL/2./fNdivHCAL,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicHCALdiv = new G4LogicalVolume(solidHCALdiv,fe,"HCALdiv",0,0,0);
|
||||
new G4PVReplica("DVEH", logicHCALdiv, physiHCAL,
|
||||
kXAxis, G4int(fNdivHCAL), fXHCAL/fNdivHCAL);
|
||||
|
||||
//------------------------------
|
||||
// MUON
|
||||
//------------------------------
|
||||
G4ThreeVector positionMUON
|
||||
= G4ThreeVector(fXBEAM + fXCDET + fXECAL + fXSOLN + fXHCAL + fXMUON/2., 0., 0.);
|
||||
G4Box* solidMUON = new G4Box("MUON",fXMUON/2.,fYZLength,fYZLength);
|
||||
G4LogicalVolume* logicMUON = new G4LogicalVolume(solidMUON,air,"MUON",0,0,0);
|
||||
new G4PVPlacement(0, // no rotation
|
||||
positionMUON, // at (x,y,z)
|
||||
"MUON", // its name
|
||||
logicMUON, // its logical volume
|
||||
physiWorld, // its mother volume
|
||||
false, // no boolean operations
|
||||
0); // no particular field
|
||||
|
||||
|
||||
G4VisAttributes* worldVisAtt = new G4VisAttributes(0);
|
||||
logicWorld->SetVisAttributes( worldVisAtt);
|
||||
return physiWorld;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void ExErrorDetectorConstruction::SetMagField(G4double fieldValue)
|
||||
{
|
||||
fMagField->SetFieldValue(fieldValue);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/src/ExErrorDetectorMessenger.cc
|
||||
/// \brief Implementation of the ExErrorDetectorMessenger class
|
||||
//
|
||||
|
||||
#include "ExErrorDetectorMessenger.hh"
|
||||
|
||||
#include "ExErrorDetectorConstruction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorDetectorMessenger::ExErrorDetectorMessenger(ExErrorDetectorConstruction* myDet)
|
||||
:G4UImessenger(),fMyDetector(myDet),fMydetDir(0),fFieldCmd(0)
|
||||
{
|
||||
|
||||
fMydetDir = new G4UIdirectory("/exerror/");
|
||||
fMydetDir->SetGuidance("ExError control.");
|
||||
|
||||
fFieldCmd = new G4UIcmdWithADoubleAndUnit("/exerror/setField",this);
|
||||
fFieldCmd->SetGuidance("Define magnetic field.");
|
||||
fFieldCmd->SetGuidance("Magnetic field will be in Z direction.");
|
||||
fFieldCmd->SetParameterName("Bz",false);
|
||||
fFieldCmd->SetDefaultUnit("tesla");
|
||||
fFieldCmd->SetUnitCategory("Magnetic flux density");
|
||||
fFieldCmd->AvailableForStates(G4State_PreInit,G4State_Init,G4State_Idle);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorDetectorMessenger::~ExErrorDetectorMessenger()
|
||||
{
|
||||
delete fFieldCmd;
|
||||
delete fMydetDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void ExErrorDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
{
|
||||
if( command == fFieldCmd ) {
|
||||
fMyDetector->SetMagField(fFieldCmd->GetNewDoubleValue(newValue));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file errProp/src/ExErrorMagneticField.cc
|
||||
/// \brief Implementation of the ExErrorMagneticField class
|
||||
//
|
||||
|
||||
#include "ExErrorMagneticField.hh"
|
||||
#include "G4FieldManager.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorMagneticField::ExErrorMagneticField()
|
||||
: G4UniformMagField(G4ThreeVector())
|
||||
{
|
||||
GetGlobalFieldManager()->SetDetectorField(this);
|
||||
GetGlobalFieldManager()->CreateChordFinder(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
ExErrorMagneticField::ExErrorMagneticField(G4ThreeVector fieldVector)
|
||||
: G4UniformMagField(fieldVector)
|
||||
{
|
||||
GetGlobalFieldManager()->SetDetectorField(this);
|
||||
GetGlobalFieldManager()->CreateChordFinder(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void ExErrorMagneticField::SetFieldValue(G4double fieldValue)
|
||||
{
|
||||
G4UniformMagField::SetFieldValue(G4ThreeVector(0,0,fieldValue));
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void ExErrorMagneticField::SetFieldValue(G4ThreeVector fieldVector)
|
||||
{
|
||||
// Find the Field Manager for the global field
|
||||
G4FieldManager* fieldMgr= GetGlobalFieldManager();
|
||||
|
||||
if(fieldVector!=G4ThreeVector(0.,0.,0.))
|
||||
{
|
||||
G4UniformMagField::SetFieldValue(fieldVector);
|
||||
fieldMgr->SetDetectorField(this);
|
||||
} else {
|
||||
// If the new field's value is Zero, then it is best to
|
||||
// insure that it is not used for propagation.
|
||||
G4MagneticField* magField = NULL;
|
||||
fieldMgr->SetDetectorField(magField);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
G4FieldManager* ExErrorMagneticField::GetGlobalFieldManager()
|
||||
{
|
||||
return G4TransportationManager::GetTransportationManager()->GetFieldManager();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user