From f794fcf60b75ac24b3ce8b64873b50757732a52a Mon Sep 17 00:00:00 2001 From: Gabriele Cosmo Date: Fri, 10 Jun 2016 12:04:27 +0200 Subject: [PATCH] Import Geant4 10.0.4 source tree --- CMakeLists.txt | 6 +- ReleaseNotes/Patch4.10.0-1.txt | 2 +- ReleaseNotes/Patch4.10.0-2.txt | 6 +- ReleaseNotes/Patch4.10.0-4.txt | 140 + ReleaseNotes/Patch4.9.6-3.txt | 175 + ReleaseNotes/Patch4.9.6-4.txt | 139 + examples/advanced/amsEcal/run1.out | 4 +- .../gammaray_telescope/gammaraytel.out | 14 +- examples/advanced/nanobeam/nanobeam.out | 4 +- examples/basic/B1/exampleB1.out | 8 +- examples/basic/B2/B2a/exampleB2a.out | 8 +- examples/basic/B2/B2b/exampleB2b.out | 11 +- examples/basic/B3/exampleB3.out | 8 +- examples/basic/B4/B4a/exampleB4a.out | 8 +- examples/basic/B4/B4b/exampleB4b.out | 8 +- examples/basic/B4/B4c/exampleB4c.out | 8 +- examples/basic/B4/B4d/exampleB4d.out | 8 +- examples/basic/B5/exampleB5.out | 312 +- examples/extended/biasing/B01/exampleB01.out | 2 +- examples/extended/biasing/B03/exampleB03.out | 44 +- .../extended/biasing/GB01/exampleGB01.out | 8 +- .../extended/biasing/GB02/exampleGB02.out | 8 +- .../electromagnetic/TestEm0/TestEm0.out | 2 +- .../electromagnetic/TestEm1/TestEm1.out | 4 +- .../electromagnetic/TestEm10/TestEm10.out | 6 +- .../electromagnetic/TestEm11/TestEm11.out | 4 +- .../electromagnetic/TestEm12/TestEm12.out | 4 +- .../electromagnetic/TestEm13/TestEm13.out | 6 +- .../electromagnetic/TestEm14/TestEm14.out | 6 +- .../electromagnetic/TestEm15/TestEm15.out | 6 +- .../electromagnetic/TestEm16/TestEm16.out | 4 +- .../electromagnetic/TestEm17/TestEm17.out | 8 +- .../electromagnetic/TestEm18/TestEm18.out | 4 +- .../electromagnetic/TestEm2/TestEm2.out | 4 +- .../electromagnetic/TestEm3/TestEm3.out | 6 +- .../electromagnetic/TestEm4/TestEm4.out | 4 +- .../electromagnetic/TestEm5/TestEm5.out | 12 +- .../electromagnetic/TestEm6/TestEm6.out | 2 +- .../electromagnetic/TestEm7/TestEm7.out | 16 +- .../electromagnetic/TestEm8/TestEm8.out | 4 +- .../electromagnetic/TestEm9/TestEm9.out | 10 +- examples/extended/field/field01/field01.out | 12 +- examples/extended/field/field02/field02.out | 12 +- examples/extended/field/field03/field03.out | 10 +- examples/extended/field/field04/field04.out | 278 +- examples/extended/field/field05/field05.out | 8 +- examples/extended/field/field06/field06.out | 10 +- .../extended/g3tog4/clGeometry/clGeometry.out | 4 +- examples/extended/hadronic/Hadr00/hadr00.out | 4 +- examples/extended/hadronic/Hadr01/hadr01.out | 4 +- examples/extended/hadronic/Hadr02/hadr02.out | 4 +- examples/extended/hadronic/Hadr03/hadr03.out | 4 +- examples/extended/hadronic/Hadr05/hadr05.out | 4 +- examples/extended/medical/DICOM/run.out | 10 +- .../medical/GammaTherapy/GammaTherapy.out | 4 +- .../electronScattering/electronScattering.out | 4 +- .../medical/fanoCavity/fanoCavity.out | 4 +- .../medical/fanoCavity2/fanoCavity2.out | 10 +- examples/extended/optical/LXe/LXe.out | 12 +- .../extended/optical/OpNovice/OpNovice.out | 746 ++-- examples/extended/optical/wls/wls.out | 8 +- .../parameterisations/Par01/examplePar01.out | 8 +- .../parameterisations/gflash/test.out | 28 +- examples/extended/persistency/P03/batch.out | 8 +- .../extended/persistency/gdml/G01/g01.out | 18 +- .../extended/persistency/gdml/G04/g04.out | 14 +- .../extended/polarisation/Pol01/pol01.out | 4 +- .../radioactivedecay/rdecay01/rdecay01.out | 13 +- .../radioactivedecay/rdecay02/rdecay02.out | 8 +- examples/extended/runAndEvent/RE01/sample.out | 13 +- examples/extended/runAndEvent/RE02/run.out | 10 +- .../extended/runAndEvent/RE05/exampleRE05.out | 385 +- .../extended/runAndEvent/RE06/exampleRE06.out | 192 +- source/GNUmakefile | 6 +- source/geometry/navigation/History | 38 +- .../include/G4ErrorPropagationNavigator.hh | 17 +- .../src/G4ErrorPropagationNavigator.cc | 112 +- source/geometry/navigation/src/G4Navigator.cc | 252 +- .../navigation/src/G4ReplicaNavigation.cc | 12 +- source/geometry/solids/CSG/History | 8 +- source/geometry/solids/CSG/src/G4OTubs.cc | 11 +- source/geometry/solids/CSG/src/G4Tubs.cc | 10 +- source/geometry/solids/specific/History | 24 +- .../solids/specific/include/G4PolyconeSide.hh | 5 +- .../solids/specific/src/G4ExtrudedSolid.cc | 16 +- .../solids/specific/src/G4Polycone.cc | 48 +- .../specific/src/G4PolyconeHistorical.cc | 32 +- .../solids/specific/src/G4PolyconeSide.cc | 133 +- .../solids/specific/src/G4Polyhedra.cc | 47 +- .../specific/src/G4PolyhedraHistorical.cc | 34 +- .../solids/specific/src/G4TriangularFacet.cc | 24 +- source/geometry/solids/usolids/History | 48 + .../geometry/solids/usolids/include/UCons.hh | 426 +-- .../solids/usolids/include/UPolyconeSide.hh | 3 + .../solids/usolids/include/UPolyhedra.hh | 389 +- .../geometry/solids/usolids/include/UTubs.hh | 384 +- .../geometry/solids/usolids/include/UUtils.hh | 458 +-- .../solids/usolids/include/VUSolid.hh | 312 +- .../geometry/solids/usolids/src/G4USolid.cc | 8 +- .../geometry/solids/usolids/src/UPolycone.cc | 3248 ++++++++-------- .../solids/usolids/src/UPolyconeSide.cc | 114 +- source/geometry/solids/usolids/src/UTet.cc | 22 +- source/geometry/solids/usolids/src/UTubs.cc | 3394 ++++++++--------- source/geometry/solids/usolids/src/UUtils.cc | 466 +-- source/geometry/volumes/History | 5 +- .../volumes/include/G4NavigationLevelRep.icc | 4 +- source/global/History | 14 + .../management/include/G4CacheDetails.hh | 2 +- .../management/include/G4FPEDetection.hh | 14 +- source/global/management/include/G4Version.hh | 12 +- source/persistency/gdml/History | 13 +- .../gdml/src/G4GDMLReadMaterials.cc | 6 +- .../persistency/gdml/src/G4GDMLWriteSolids.cc | 4 +- .../constructors/hadron_inelastic/History | 5 +- .../src/G4HadronPhysicsFTFP_BERT.cc | 46 +- .../src/G4HadronPhysicsFTFP_BERT_HP.cc | 39 +- .../src/G4HadronPhysicsFTFP_BERT_TRV.cc | 36 +- .../src/G4HadronPhysicsFTF_BIC.cc | 51 +- .../src/G4HadronPhysicsQGSP_BERT.cc | 41 +- .../src/G4HadronPhysicsQGSP_BERT_HP.cc | 42 +- .../src/G4HadronPhysicsQGSP_BIC.cc | 40 +- .../src/G4HadronPhysicsQGSP_BIC_HP.cc | 40 +- .../src/G4HadronPhysicsQGSP_FTFP_BERT.cc | 50 +- .../src/G4HadronPhysicsQGS_BIC.cc | 52 +- .../src/G4HadronPhysicsShielding.cc | 46 +- .../constructors/limiters/History | 6 +- .../limiters/src/G4ParallelWorldPhysics.cc | 2 +- source/physics_lists/lists/History | 6 +- .../lists/include/INCLXXPhysicsListHelper.icc | 3 +- source/processes/hadronic/management/History | 5 + .../management/src/G4HadronicProcess.cc | 30 +- .../processes/hadronic/models/cascade/History | 11 + .../cascade/include/G4CascadeInterface.hh | 6 +- .../cascade/cascade/src/G4CascadeInterface.cc | 39 +- source/processes/hadronic/stopping/History | 5 + .../stopping/src/G4HadronStoppingProcess.cc | 35 +- .../stopping/src/G4MuonMinusBoundDecay.cc | 4 +- source/processes/management/History | 5 +- .../management/src/G4ProcessManager.cc | 8 +- source/processes/transportation/History | 10 +- .../src/G4CoupledTransportation.cc | 5 +- .../transportation/src/G4Transportation.cc | 3 +- 142 files changed, 7495 insertions(+), 6247 deletions(-) create mode 100644 ReleaseNotes/Patch4.10.0-4.txt create mode 100644 ReleaseNotes/Patch4.9.6-3.txt create mode 100644 ReleaseNotes/Patch4.9.6-4.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 00e288b7fed..0ad11899002 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # # 21st September 2010 Ben Morgan # -# $Id: CMakeLists.txt 84874 2014-10-22 06:41:21Z gcosmo $ +# $Id: CMakeLists.txt 88523 2015-02-25 15:01:37Z gcosmo $ # #------------------------------------------------------------------------------ @@ -76,10 +76,10 @@ set(CMAKE_MODULE_PATH # See the documentation in each of these modules for further details. # # - Versioning. We do this here for now -set(${PROJECT_NAME}_VERSION "10.0.3") +set(${PROJECT_NAME}_VERSION "10.0.4") set(${PROJECT_NAME}_VERSION_MAJOR "10") set(${PROJECT_NAME}_VERSION_MINOR "0") -set(${PROJECT_NAME}_VERSION_PATCH "3") +set(${PROJECT_NAME}_VERSION_PATCH "4") # - Provide dependent options as these are needed for some Geant4 features include(CMakeDependentOption) diff --git a/ReleaseNotes/Patch4.10.0-1.txt b/ReleaseNotes/Patch4.10.0-1.txt index fe54af9ae00..220e0c516ca 100644 --- a/ReleaseNotes/Patch4.10.0-1.txt +++ b/ReleaseNotes/Patch4.10.0-1.txt @@ -215,7 +215,7 @@ List of fixes included in this public patch since the public release 10.0: o Interfaces: ---------- - + Explicitly set the LC_NUMBERIC locale to "C" in G4UIQt. + + Explicitly set the LC_NUMERIC locale to "C" in G4Qt. Addressing problem report #1487. Fixed problem with resizing the QGLwidget when scene is opened from UI. diff --git a/ReleaseNotes/Patch4.10.0-2.txt b/ReleaseNotes/Patch4.10.0-2.txt index 16d42f4b09e..8a05724bab6 100644 --- a/ReleaseNotes/Patch4.10.0-2.txt +++ b/ReleaseNotes/Patch4.10.0-2.txt @@ -168,12 +168,12 @@ List of fixes included in this public patch since the public release 10.0.p01: o Interfaces: ---------- - + G4UIterminal: fixed the problem that some commands could not be processed; (o) + + G4UIterminal: fixed the problem that some commands could not be processed; use substr() instead of () operator for the comparison of substrings. o Materials: --------- - + G4Material, G4Element: define default names and symbols for elements (o) + + G4Material, G4Element: define default names and symbols for elements and isotopes when loaded from NIST and not explicitly defined by users. Fixes exporting of names in GDML when writing detector description. + G4Material: corrected initialisation of pointers in fake default @@ -273,7 +273,7 @@ List of fixes included in this public patch since the public release 10.0.p01: o Processes - Hadronic: -------------------- + models/binary_cascade: - o G4BinaryCasacde: improved calculation of mass, and of correction for (o) + o G4BinaryCasacde: improved calculation of mass, and of correction for outgoing particles by always using GetIon() method; addresses potential crash for p+d seen in d+H in BIC. o G4{Proton,Neutron}Field.cc: protect against negative index into buffer. diff --git a/ReleaseNotes/Patch4.10.0-4.txt b/ReleaseNotes/Patch4.10.0-4.txt new file mode 100644 index 00000000000..a64bf800bbb --- /dev/null +++ b/ReleaseNotes/Patch4.10.0-4.txt @@ -0,0 +1,140 @@ + + Geant4 10.0 - patch-04 Release Notes + ------------------------------------ + + 6 March 2015 + +List of fixes included in this public patch since the public release 10.0.p03: + + o Geometry: + -------- + + navigation: + o G4Navigator: corrections in the computation of exit normal and small + fix to calculation of stored step endpoint, for steps that do not hit + a boundary. Some code cleanup. + o Added protection in G4ReplicaNavigation::DistanceToOutRad() for + potential rare cases of negative value to sqrt() in equation + calculation for rmin/rmax intersection. + o G4ErrorPropagationNavigator: added GetGlobalExitNormal() method to + match the update of G4Navigator interface made back in release 9.5. + Fix to make normal a unit vector, and fixed Coverity defect to protect + against null 'target'. Revised implementation of ComputeStep(), + to avoid calling G4Navigator::ComputeSafety(). + Addresses problem report #1679. + + solids/CSG: + o Fixed typo in copy-ctor and assignment operator for G4Tubs and G4OTubs. + o Fix in temporary class G4OTubs to include symbol in library in any case. + + solids/specific: + o Fixed triangularisation method AddGeneralPOlygoneFacets() in + G4ExtrudedSolid by avoiding flat triangles. Added warning message to + G4TriangularFacet constructor if Area is 0; i.e., case of flat triangle. + Addressing problem report #1703. + o Added special DistanceAway() method for Inside() in order to fix + precision problem in calculation of DistanceToSide() in G4PolyconeSide. + o Fix in SetOriginalParameters() for G4Polycone and G4Polyhedra, in case + of presence of 'rings' structures. Addressing problem report #1705. + o Use canonical form for operator=() in G4PolyconeHistorical and + G4PolyhedraHistorical. + + solids/usolids: + o UPolycone: correction in Capacity() for iteration over the number of + sections and in SurfaceArea() in case opening-angle is less than 2*pi. + Fixes in InsideSection() for openPhi when StartPhi is negative, + in Init() for Polycone defined from ZPlane[0]>ZPlane[N], + and in DistanceToOut() for points starting on internal surface. + Fix in InsideSection() for points(0,0,z). + Fix in SetOriginalParameters(), in case of presence of 'rings' + structures constructed by (r,z) corners. + Use canonical form for operator=(). Code cleanup and formatting. + o Added special DistanceAway() method for Inside() in order to fix + precision problem in calculation of DistanceToSide() in UPolyconeSide. + o Fixed typo in copy-ctor and assignment operator for UTubs. + o UPolyhedra: moved Extent() from protected to public. + o UTet: fixed approximation in Extent(). + o Minor fixes of errors reported by Coverity and unit tests in + UTubs,UCons, UTet. + o Removed useless 'inline' specification for pure virtual function + StreamInfo() in VUSolid base class. + o Renamed ExceptionSeverity struct to UExceptionSeverity in UUtils to + avoid possible clashes with external libraries. + + volumes: + o Avoid post-increment in G4NavigationLevelRep::AddAReference(). + + o Generic Processes: + ----------------- + + Management: + o Fixed logic in G4ProcessManager::SetProcessOrderingToSecond() to make + sure the process is always set before the process that has ordering + index 1. + + Transportation: + o G4Transportation, G4CoupledTransportation: in AlongStepGetPIL(), (o) + initialize restMass with G4DynamicParticle (as is used in DoIt()), + not with G4ParticleDefinition. Resolves inconsistent kinematics + when dynamic mass is measurably different from "PDG" mass. + + o Global: + ------ + + G4FPEDetection.hh: restrict FPE trapping to GCC only, excluding CLang. + Addresses problem with Qt generating an apparent FPE deep inside its + code with MacOSX CLang builds. + Added call to 'sigfillset' to clear any signals before any use of + sigset_t in InvalidOperationDetection() for both MacOS and Linux, as + suggested in specifications. + + Added missing G4GLOB_DLL specification for DLL import/export to + G4CacheDetails specialization of cache reference for double. + + Updated date and version for 10.0.p04. + + o Persistency: + ----------- + + gdml: + o Fixed typo in G4GDMLWriteSolids::BooleanWrite() for the case of + repeated displacements of the reference solid in the same Boolean + operation (issue reported by ATLAS). + o Correction to G4GDMLReadMaterials::MixtureRead() to revert order of + reading (first elements then materials) for mixtures by fraction; + corrects referencing for cases when elements and materials may carry + the same name (case reported by ATLAS). + + o Physics Lists: + ------------- + + constructors/hadron_inelastic: + o Added protection in destructors to avoid double deletes. + + constructors/limiters: + o Fix in G4ParallelWorldProcess to correctly use method + SetProcessOrderingToSecond(). + + lists: + o INCLXXPhysicsListHelper: avoid use of G4NeutronTrackingCut + for *_HP physics-lists. + + o Processes - Hadronic: + -------------------- + + management: + o G4HadronicProcess::CheckResult(): added check for dynamic mass + to correspond to PDG mass within ~10%. + + models/cascade: + o G4CascadeInterface: fixed possible infinite-loop condition where + (nTries >= maxTries) and momentum balance fails. + + stopping: + o G4HadronStoppingProcess, G4MuonMinusBoundDecay: fixed time of muon + nuclear capture secondaries. Addressing problem report #1695. + + o Examples: + -------- + + Updated reference outputs. + + + ---------------------------------------------------------------------------- + + Technical Notes + --------------- + + o This patch should be applied on top of release 10.0 or 10.0.p01/2/3. + o Technical notes distributed for release 10.0 are also applicable and + valid for this patch. + +The code and rebuilt binary libraries for release 10.0.p04 are available +through our "Download" Web page: + http://cern.ch/geant4/support/download.shtml + +Please refer to the Geant4 User Documentation: + http://cern.ch/geant4/support/userdocuments.shtml +for further information about using Geant4. diff --git a/ReleaseNotes/Patch4.9.6-3.txt b/ReleaseNotes/Patch4.9.6-3.txt new file mode 100644 index 00000000000..7061f968e40 --- /dev/null +++ b/ReleaseNotes/Patch4.9.6-3.txt @@ -0,0 +1,175 @@ + + Geant4 9.6 - patch-03 Release Notes + ----------------------------------- + + 14 March 2014 + +List of fixes included in this public patch since the public release 9.6.p02: + + o Configuration: + ------------- + + CMake: + o Fixed bug in checking of status of Xmu include path and library + variables that resulted in no error being emitted if these were not + found. + o Ported scripts to MacOSX 10.9 and use of Qt5. + + GNUMake: + o Updated settings for Darwin targets. + + o Analysis: + -------- + + Updated to g4tools 1.4.4, to fix incorrect setting of the list + of free blocks in a Root file; addressing problem report #1523. + Fixed failure in writing empty ntuples (in tools/wroot/basket). + + Fix in G4RootAnalysisManager::WriteOnAscii(). + Addressing problem report report #1473. + + o Digits_Hits: + ----------- + + Fixed angle factor in G4PSSphereSurfaceFlux to keep it always + positive. Addressing problem report #1479. + + o Geometry: + -------- + + management: + o Fix to G4VSolid::EstimateCubicVolume() to make proper use of specified + accuracy. Addressing problem report #1493. + + navigation: + o G4MultiNavigator: fixed use of enum as Boolean in GetGlobalExitNormal(). + + solids/CSG: + o Corrected sanity check for wrong/small dimensions in G4Box constructor. + o Correctly initialise fSPhi to zero in G4Sphere constructor. + + solids/specific: + o Fix in G4SurfaceVoxelizer affecting tessellated-solid (and + extruded-solid) for wrong computation of DistanceToIn(p,v) for + points outside, when optimisation is active. + o Fix in G4TessellatedSolid::DistanceToIn(p,v) for specific cases + where points are located near surface. + o Fix in G4GenericTrap::InsidePolygone() to check if p lies between + the two extremes of the segment. Addressing problem report #1541. + + o Global: + ------ + + Updated date and version for 9.6.p03. + + o Electromagnetic Processes: + ------------------------- + + Low Energy: + o Fixed case of exception from G4PenelopeOscillatorManager for + specific materials. + + Muons: + o G4MuPairProductionModel, G4MuBremsstrahlungModel: complete fix for + cross-section computation. Addresses problem report #1471. + + Standard: + o G4UrbanMscModel95, G4UrbanMscModel96: fixed bug in randomisation + of 1st step in a volume (useDistanceToBoundary option). + o G4NuclearStopping: do not reset dynamic charge of an ion, because + G4ionIonisation process is responsible for that (fix for partially + charged ion beam) + + Utils: + o G4VMultipleScattering: increased lowest limit from 1 eV to 10 eV to + avoid semi-infinite loop for low-energy particle tracking; + fixed re-computation of post-step safety in AlongStepDoIt method. + o G4VEnergyLossProcess, G4VEmProcess: set interaction length to + DBL_MAX if process is de-activated (fixed problem of DNA simulation); + fixed CrossSectionPerVolume access method. + o Fixed typo in G4EmBiasingManager. + + o Generic Processes: + ----------------- + + Decay: + o Fixed problem of wrong global time for secondaries in case that the + primary track stops during along step. Addressing problem report #1555. + + o Hadronic Processes: + ------------------ + + cross_sections: + o Code optimization for G4ElectroNuclearCrossSection and + G4PhotoNuclearCrossSection. + + models/cascade: + o G4NucleiModel: fixed rare cases of non-reproducibility in + method generateParticleFate(). Some data was not properly + initialized in the case that the interaction-partners list has + one single element. + o Fixed implementation of G4CascadeParameters singleton to follow + canonical format. Addressing problem report #1557. + o G4ParticleLargerEkin, G4ParticleLargerBeta: correct ">=" to ">" + conditions to avoid error in case that both inputs are identical. + + models/de_excitation: + o G4NeutronRadCapture: fixed run time memory leak, fixed time of + reaction products. + o G4ExcitationHandler: if FermiBreakUp returns unchanged fragment + delete it to avoid minor memory leak; addressing HyperNews post + #1371. Fixed typo in GetPhotoEvaporation() method name. + Fixed typo in the SetMaxAForFermiBreakUp() method. + o G4FermiFragmentsPool: fixed typo for use of G4endl for end line. + o G4LevelReader, G4NuclearLevelManager: fixed trivial compilation issues + detected on Visual C++ 18. + + models/em_dissociation: + o Fixed memory leak of products from G4ExcitationHandler. + + models/parton_string/hadronization: + o Fixed two mistakes in the index manipulation of the BaryonWeight + 4-dimensional vector in G4LundStringFragmentation. + + models/parton_string/management: + o Fix to remove 'inline' qualifier from methods in G4VParticipants.cc + and G4PomeronCrossSection.cc, responsible for cases of run-time + errors for undefined symbols in library... + + stopping: + o G4MuMinusCapturePrecompound: fixed case of infinite loop by + reimplementing old algorithm of mu- capture which does not include + direct muon reaction but only considering de-excitation of residual + fragment. Addressing problem report #1536. + + o Materials: + --------- + + G4IonisParamMat: fixed density effect parameterisation. + + o Particles: + --------- + + Fixed properties for heavy anti-baryons G4AntiLambdab, G4AntiSigmabZero + and G4AntiLambdacPlus. Addressing problem report #1571. + + o Persistency: + ----------- + + ascii: + o Corrected typo in G4tgrPlaceParameterisation::operator<<(). + Addressing problem report #1504. + o Corrected typo in G4tgrUtils::WordIsUnit(). + o Replaced deprecated calls to solids accessor methods. + + gdml: + o Fix in G4GDMLReadParamvol::ParametersRead() for reading parameterised + Sphere, Orb, Torus and Para. + o Replaced deprecated calls to G4Sphere accessor methods. + + o Physics Lists: + ------------- + + G4EmStandardPhysics_option3, G4EmStandardPhysics_option4, + G4EmLivermorePhysics, G4EmPenelopePhysics: use RangeFactor=0.01 + for increased simulation accuracy; use G4UrbanMscModel96. + + o Visualization: + ------------- + + OpenGL: + o Fixed bug in the G4OpenGLQtViewer for viewer iterator increment + checking. Corrected use of 'true' in G4OpenGLQtExportDialog. + + o Examples: + -------- + + Updated reference outputs. + + ---------------------------------------------------------------------------- + + Technical Notes + --------------- + + o This patch should be applied on top of release 9.6. + o Technical notes distributed for release 9.6 are also applicable and + valid for this patch. + +The code and rebuilt binary libraries for release 9.6.p03 are available +through our "Download" Web page: + http://cern.ch/geant4/support/download.shtml + +Please refer to the Geant4 User Documentation: + http://cern.ch/geant4/support/userdocuments.shtml +for further information about using Geant4. diff --git a/ReleaseNotes/Patch4.9.6-4.txt b/ReleaseNotes/Patch4.9.6-4.txt new file mode 100644 index 00000000000..505dba39437 --- /dev/null +++ b/ReleaseNotes/Patch4.9.6-4.txt @@ -0,0 +1,139 @@ + + Geant4 9.6 - patch-04 Release Notes + ----------------------------------- + + 30 January 2015 + +List of fixes included in this public patch since the public release 9.6.p03: + + o Geometry: + -------- + + navigation: + o G4Navigator: corrected saving/restoring of 'navigator state'. + o G4PathFinder: added EndTrack() method, to reset internal state + and inform G4TransportationManager to use 'ordinary' Navigator. + o Fix in G4MultiNavigator to properly set 'fIdNavLimiting' index to + navigator limiting the step, if only one navigator limits the step. + + solids/specific: + o Fixed triangularisation method AddGeneralPOlygoneFacets() in + G4ExtrudedSolid by avoiding flat triangles. Added warning message to + G4TriangularFacet constructor if Area is 0; i.e., case of flat triangle. + Addressing problem report #1703. + o Get rid of deprecated 'register' storage class specifier in source files. + + volumes + o Avoid post-increment in G4NavigationLevelRep::AddAReference(). + + o Global: + ------ + + Fix in G4SimplexDownhill header to proper define header guard. + + Updated date and version for 9.6.p04. + + o Generic Processes: + ----------------- + + Management: + o Fixed logic in G4ProcessManager::SetProcessOrderingToSecond() to make + sure the process is always set before the process that has ordering + index 1. + + Transportation: + o Fix in G4CoupledTransportation to message G4PathFinder for resetting + to the default navigator as the 'standard' Mass navigator at end of + tracking. Avoid use of multi-navigator when it should not be used. + o Fix in G4Transportation to save pointer to particle change as required + by G4VProcess interface. + + o Hadronic Processes: + ------------------ + + management: + o G4HadronicProcess::CheckResult(): added check for dynamic mass + to correspond to PDG mass within ~10%. + + models/binary_cascade: + o G4BinaryCasacde: improved calculation of mass, and of correction for + outgoing particles by always using GetIon() method; addresses potential + crash for p+d seen in d+H in BIC. + o G4{Proton,Neutron}Field: protect against negative index into buffer. + + models/cascade: + o G4CascadeInterface: fixed possible infinite-loop condition where + (nTries >= maxTries) and momentum balance fails. + o G4InuclNuclei: fix case of floating-point exception in + setExcitationEnergy() for zero Ekin. + o Fix for memory leak in secondaries in G4IntraNucleiCascader. + Addressing problem report #1584. + + models/parton_string: + o Fix for rare crash in G4LundStringFragmentation in the case of + anti-sigma+ capture at rest on hydrogen. + + stopping: + o G4MuMinusCapturePrecompound: added simplified model for capture in + deuterium and in He4; reduced number of trials to find neutrino + 4-momentum from 1000 to 100; added protection 1 keV for negative + excitation energy, and substituted FatalException by JustWarning. + Addressing rare cases of infinite loop reported by ATLAS. + o G4AntiProtonAnnihilationAtRest: fixed bug related to a wrong target + sampling (always the last element of the element vector was sampled + as target). + o G4HadronStoppingProcess, G4MuonMinusBoundDecay: fixed time of muon + nuclear capture secondaries. Addressing problem report #1695. + o Fix for Coverity defects in G4MuonMinusCaptureAtRest. + + o Intercoms: + --------- + + G4GenericMessenger: fixed case of core dump when GetCurrentValue() + method is invoked for a command defined by DeclareMethod(). + + Corrected inclusion protection flag in G4GenericMessenger.hh. + Addressing old problem report #1527. + + Fixed treatment of double-quotes in G4UImanager::ForeachS(). + Addressing problem report #1614. + + o Interfaces: + ---------- + + Explicitly set the LC_NUMERIC locale to "C" in G4Qt. + Addressing problem report #1487. + Fixed problem with resizing the QGLwidget when scene is opened from UI. + + o Persistency: + ----------- + + ascii: + o Corrected dump of 'phi' and 'theta' for G4Trap and G4Para in dumper. + Addressing problem report #1602. + + gdml: + o Fixed typo in G4GDMLWriteSolids::BooleanWrite() for the case of repeated + displacements of the reference solid in the same Boolean operation (issue + reported by ATLAS). + o Correction to G4GDMLReadMaterials::MixtureRead() to revert order of + reading (first elements then materials) for mixtures by fraction; + corrects referencing for cases when elements and materials may carry + the same name (case reported by ATLAS). + o Correction to G4GDMLRead::Read() for the case when schema validation + is turned off, to disable initialisation of validation machinery in the + parser and allow for standalone parsing off-network. + Added better description to fatal exception in case document content + imported happens to be empty in G4GDMLRead::Read(). + o Corrected minor Coverity defect in G4GDMLParser for uninitialised + 'strip' flag in constructors. + o Corrected potential memory leak in G4GDMLReadSolids. + o Corrected dump of 'phi' and 'theta' for G4Trap and G4Para in writer. + Addressing problem report #1602. + o Get rid of deprecated 'register' storage class specifier in source files. + o Added comparison operator for 3-vector key in 'vertexMap' in + G4GDMLWriteSolids for export of tessellated solid. + Addressing problem report #1573. + + o Examples: + -------- + + Updated reference outputs. + + ---------------------------------------------------------------------------- + + Technical Notes + --------------- + + o This patch should be applied on top of release 9.6. + o Technical notes distributed for release 9.6 are also applicable and + valid for this patch. + +The code and rebuilt binary libraries for release 9.6.p04 are available +through our "Download" Web page: + http://cern.ch/geant4/support/download.shtml + +Please refer to the Geant4 User Documentation: + http://cern.ch/geant4/support/userdocuments.shtml +for further information about using Geant4. diff --git a/examples/advanced/amsEcal/run1.out b/examples/advanced/amsEcal/run1.out index e324356f42a..6fd012e0f87 100644 --- a/examples/advanced/amsEcal/run1.out +++ b/examples/advanced/amsEcal/run1.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -189,7 +189,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=23.83s Real=25.14s Sys=0.51s + User=26.71s Real=27.49s Sys=0.42s ------------------------------------------------------------- ---> The calorimeter is 9 Modules diff --git a/examples/advanced/gammaray_telescope/gammaraytel.out b/examples/advanced/gammaray_telescope/gammaraytel.out index c86b3dbd349..b482a4a888b 100644 --- a/examples/advanced/gammaray_telescope/gammaraytel.out +++ b/examples/advanced/gammaray_telescope/gammaraytel.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -22,10 +22,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -2127,7 +2129,7 @@ Number of digits in this event = 7 Run terminated. Run Summary Number of events processed : 100 - User=0.5s Real=0.51s Sys=0s + User=0.76s Real=0.85s Sys=0.01s End of Run File Tracks_0.dat /gun/particle gamma @@ -3243,7 +3245,7 @@ Number of digits in this event = 7 Run terminated. Run Summary Number of events processed : 100 - User=4.12s Real=4.15s Sys=0.01s + User=4.42s Real=4.48s Sys=0.01s End of Run File Tracks_1.dat /gun/particle e- @@ -5638,7 +5640,7 @@ Number of digits in this event = 27 Run terminated. Run Summary Number of events processed : 100 - User=4.5s Real=4.58s Sys=0.02s + User=4.45s Real=4.5s Sys=0.02s End of Run File Tracks_2.dat Graphics systems deleted. diff --git a/examples/advanced/nanobeam/nanobeam.out b/examples/advanced/nanobeam/nanobeam.out index f2caf09c772..ade76f78e10 100644 --- a/examples/advanced/nanobeam/nanobeam.out +++ b/examples/advanced/nanobeam/nanobeam.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -162,7 +162,7 @@ Index : 0 used in the geometry : Yes ==================================================================== -##### Create analysis manager 0x12e8e40 +##### Create analysis manager 0x260a440 Using Root analysis manager Ntuple-1 created Ntuple-2 created diff --git a/examples/basic/B1/exampleB1.out b/examples/basic/B1/exampleB1.out index 385f2abbdbc..359301cde68 100644 --- a/examples/basic/B1/exampleB1.out +++ b/examples/basic/B1/exampleB1.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -25,10 +25,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B2/B2a/exampleB2a.out b/examples/basic/B2/B2a/exampleB2a.out index 77bcabc71ce..ec59fb8975e 100644 --- a/examples/basic/B2/B2a/exampleB2a.out +++ b/examples/basic/B2/B2a/exampleB2a.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -92,10 +92,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B2/B2b/exampleB2b.out b/examples/basic/B2/B2b/exampleB2b.out index 1c04e907ba2..aa0263f112c 100644 --- a/examples/basic/B2/B2b/exampleB2b.out +++ b/examples/basic/B2/B2b/exampleB2b.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -88,10 +88,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -13983,8 +13985,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 0 328 178 74.2 0.00145 0 0 0 Chamber initStep 1 328 178 74.2 0 0.00145 0.067 0.067 Chamber eIoni -********************************************************************************************************* -* G4Track Information: Particle = e- +************** ============================================================================================ ================= lines above cut to keep file within limits =============================== ============================================================================================ diff --git a/examples/basic/B3/exampleB3.out b/examples/basic/B3/exampleB3.out index fd93e6dd171..a3d197a49dd 100644 --- a/examples/basic/B3/exampleB3.out +++ b/examples/basic/B3/exampleB3.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -169,10 +169,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B4/B4a/exampleB4a.out b/examples/basic/B4/B4a/exampleB4a.out index 1072125f1f1..385ac6076c1 100644 --- a/examples/basic/B4/B4a/exampleB4a.out +++ b/examples/basic/B4/B4a/exampleB4a.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -65,10 +65,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B4/B4b/exampleB4b.out b/examples/basic/B4/B4b/exampleB4b.out index eccc612c4f6..d69ddc019e2 100644 --- a/examples/basic/B4/B4b/exampleB4b.out +++ b/examples/basic/B4/B4b/exampleB4b.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -65,10 +65,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B4/B4c/exampleB4c.out b/examples/basic/B4/B4c/exampleB4c.out index 1072125f1f1..385ac6076c1 100644 --- a/examples/basic/B4/B4c/exampleB4c.out +++ b/examples/basic/B4/B4c/exampleB4c.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -65,10 +65,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B4/B4d/exampleB4d.out b/examples/basic/B4/B4d/exampleB4d.out index 98885f91221..5755f389e1e 100644 --- a/examples/basic/B4/B4d/exampleB4d.out +++ b/examples/basic/B4/B4d/exampleB4d.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -71,10 +71,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/basic/B5/exampleB5.out b/examples/basic/B5/exampleB5.out index fe8fa114aab..440a6aa4159 100644 --- a/examples/basic/B5/exampleB5.out +++ b/examples/basic/B5/exampleB5.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -162,10 +162,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -731,8 +733,10 @@ hPairProd: for pi- SubType= 4 >>> Event 0 >>> Simulation truth : proton (-0,0,100000) Hodoscope 1 has 1 hits. Hodoscope[7] 4.9870028710763 (nsec) -Hodoscope 2 has 1 hits. +Hodoscope 2 has 3 hits. Hodoscope[9] 43.188206256428 (nsec) + Hodoscope[6] 232.58303056958 (nsec) + Hodoscope[7] 240.18728830592 (nsec) Drift Chamber 1 has 5 hits. Layer[0] : time 6.6712421748072 (nsec) --- local (x,y) 0.0048810438284524, -0.040618961646763 Layer[1] : time 8.3391361182478 (nsec) --- local (x,y) 0.01371167961631, -0.057947118948905 @@ -745,8 +749,8 @@ Drift Chamber 2 has 5 hits. Layer[2] : time 38.192162904947 (nsec) --- local (x,y) -206.63214994593, -0.22165193076005 Layer[3] : time 39.862968219571 (nsec) --- local (x,y) -236.1876889161, -0.21826314435878 Layer[4] : time 41.533773915679 (nsec) --- local (x,y) -265.74516506047, -0.21598260220826 -EM Calorimeter has 47 hits. Total Edep is 491.63265230717 (MeV) -Hadron Calorimeter has 17 hits. Total Edep is 4266.3041220892 (MeV) +EM Calorimeter has 47 hits. Total Edep is 478.616852566 (MeV) +Hadron Calorimeter has 17 hits. Total Edep is 4325.749329836 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 1 starts. @@ -755,24 +759,26 @@ Hadron Calorimeter has 17 hits. Total Edep is 4266.3041220892 (MeV) >>> Event 0 >>> Simulation truth : pi+ (0,0,100000) Hodoscope 1 has 1 hits. - Hodoscope[7] 4.9867880839795 (nsec) -Hodoscope 2 has 2 hits. - Hodoscope[10] 42.693829033973 (nsec) - Hodoscope[5] 915.69512227658 (nsec) + Hodoscope[7] 4.9867880839234 (nsec) +Hodoscope 2 has 4 hits. + Hodoscope[10] 42.694355719958 (nsec) + Hodoscope[17] 908.23604165096 (nsec) + Hodoscope[18] 910.90877443482 (nsec) + Hodoscope[9] 148.98740728618 (nsec) Drift Chamber 1 has 5 hits. - Layer[0] : time 6.6709548430468 (nsec) --- local (x,y) -0.0089233008454233, 0.014299398583714 - Layer[1] : time 8.338776945731 (nsec) --- local (x,y) -0.01036444892207, 0.031312881480819 - Layer[2] : time 10.006599048291 (nsec) --- local (x,y) -0.011313673830321, 0.047204026806737 - Layer[3] : time 11.67442115072 (nsec) --- local (x,y) -0.010470572922579, 0.061730299665792 - Layer[4] : time 13.342243253158 (nsec) --- local (x,y) -0.00901814861483, 0.076317087616313 + Layer[0] : time 6.670954842587 (nsec) --- local (x,y) 0.0066934580138367, -0.0074447475206941 + Layer[1] : time 8.3387769448151 (nsec) --- local (x,y) 0.013780957492669, -0.017697162658055 + Layer[2] : time 10.006599047077 (nsec) --- local (x,y) 0.020893810782494, -0.028359547736557 + Layer[3] : time 11.674421149117 (nsec) --- local (x,y) 0.026621727831882, -0.036358536598062 + Layer[4] : time 13.34224325109 (nsec) --- local (x,y) 0.031786026624746, -0.043337008507396 Drift Chamber 2 has 5 hits. - Layer[0] : time 34.366524044898 (nsec) --- local (x,y) -82.710917169202, 0.19945045601336 - Layer[1] : time 36.035256763269 (nsec) --- local (x,y) -99.235752176947, 0.2081635453125 - Layer[2] : time 37.703988999863 (nsec) --- local (x,y) -115.75621500463, 0.21470212739785 - Layer[3] : time 39.37272137083 (nsec) --- local (x,y) -132.27789771489, 0.22089440761685 - Layer[4] : time 41.041452534971 (nsec) --- local (x,y) -148.78861692792, 0.21815934848461 -EM Calorimeter has 63 hits. Total Edep is 16143.587519995 (MeV) -Hadron Calorimeter has 19 hits. Total Edep is 3985.9967827445 (MeV) + Layer[0] : time 34.367029140873 (nsec) --- local (x,y) -82.65015547285, -0.19031089662562 + Layer[1] : time 36.035764841934 (nsec) --- local (x,y) -99.202035356734, -0.20432467869616 + Layer[2] : time 37.704500731682 (nsec) --- local (x,y) -115.75562462789, -0.2185756111676 + Layer[3] : time 39.373236850579 (nsec) --- local (x,y) -132.31128910327, -0.23368275380182 + Layer[4] : time 41.041973108728 (nsec) --- local (x,y) -148.86821342094, -0.25038818114186 +EM Calorimeter has 69 hits. Total Edep is 26452.145945786 (MeV) +Hadron Calorimeter has 20 hits. Total Edep is 2479.5352330993 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 2 starts. @@ -781,55 +787,56 @@ Hadron Calorimeter has 19 hits. Total Edep is 3985.9967827445 (MeV) >>> Event 0 >>> Simulation truth : e+ (-0,0,100000) Hodoscope 1 has 1 hits. - Hodoscope[7] 4.9867832232685 (nsec) -Hodoscope 2 has 3 hits. - Hodoscope[7] 43.243233056264 (nsec) - Hodoscope[15] 57.219014611248 (nsec) - Hodoscope[3] 60.876977910361 (nsec) -Drift Chamber 1 has 8 hits. - Layer[0] : time 6.6709483411293 (nsec) --- local (x,y) 0.01813732871829, -0.0035661110834666 - Layer[1] : time 8.3387688180997 (nsec) --- local (x,y) 0.035245826642169, -0.0036363808830816 - Layer[2] : time 10.006589295168 (nsec) --- local (x,y) 0.053088793330232, -0.0053226473645314 - Layer[2] : time 10.043205341677 (nsec) --- local (x,y) 22.617744290648, 4.2183941496141 - Layer[3] : time 11.67440977185 (nsec) --- local (x,y) 0.066524646597182, -0.010351296250054 - Layer[3] : time 12.787704350017 (nsec) --- local (x,y) 576.42874158268, -74.714837534979 - Layer[4] : time 13.34223024848 (nsec) --- local (x,y) 0.079215334171313, -0.01574537837537 - Layer[4] : time 14.759110685007 (nsec) --- local (x,y) 765.6031581613, -138.61762062087 + Hodoscope[7] 4.9867832232928 (nsec) +Hodoscope 2 has 1 hits. + Hodoscope[9] 43.186059371989 (nsec) +Drift Chamber 1 has 5 hits. + Layer[0] : time 6.6709483401846 (nsec) --- local (x,y) 0.0034486961822289, -0.015870556305632 + Layer[1] : time 8.338768816379 (nsec) --- local (x,y) 0.0051702674540917, -0.023475565619463 + Layer[2] : time 10.006589292983 (nsec) --- local (x,y) 0.0091914531292716, -0.036287878544737 + Layer[3] : time 11.674409769966 (nsec) --- local (x,y) 0.017369438575288, -0.051443613131434 + Layer[4] : time 13.342230246833 (nsec) --- local (x,y) 0.026584921745261, -0.064759231880092 Drift Chamber 2 has 5 hits. - Layer[0] : time 34.869947555704 (nsec) --- local (x,y) -246.60863392717, -0.10471882065858 - Layer[1] : time 36.547894536855 (nsec) --- local (x,y) -301.79075248413, -0.11153576648048 - Layer[2] : time 38.225840432035 (nsec) --- local (x,y) -356.96990327076, -0.11717827190184 - Layer[3] : time 39.903786651069 (nsec) --- local (x,y) -412.1499390494, -0.1237178929968 - Layer[4] : time 41.581732128828 (nsec) --- local (x,y) -467.32794865156, -0.13214205931028 -EM Calorimeter has 53 hits. Total Edep is 91487.504055292 (MeV) -Hadron Calorimeter has 9 hits. Total Edep is 46.924821839561 (MeV) + Layer[0] : time 34.84882371274 (nsec) --- local (x,y) -147.42425327984, -0.30167502482764 + Layer[1] : time 36.519545915788 (nsec) --- local (x,y) -176.93139483157, -0.33685175313578 + Layer[2] : time 38.190268117145 (nsec) --- local (x,y) -206.43852769316, -0.37210133681756 + Layer[3] : time 39.860989964875 (nsec) --- local (x,y) -235.94386470876, -0.40405213314586 + Layer[4] : time 41.531711259413 (nsec) --- local (x,y) -265.44638973434, -0.43265539623657 +EM Calorimeter has 50 hits. Total Edep is 85019.104561308 (MeV) +Hadron Calorimeter has 7 hits. Total Edep is 79.674442439215 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 3 starts. ... open Root analysis file : B5.root - done --> Event 0 starts. ->>> Event 0 >>> Simulation truth : proton (0,0,10000) +>>> Event 0 >>> Simulation truth : proton (-0,0,10000) Hodoscope 1 has 1 hits. - Hodoscope[7] 5.0086955789997 (nsec) -Hodoscope 2 has 1 hits. - Hodoscope[9] 43.379092710138 (nsec) -Drift Chamber 1 has 7 hits. - Layer[0] : time 6.7002638151399 (nsec) --- local (x,y) 0.095863221157383, 0.03143828139357 - Layer[0] : time 6.7252906528756 (nsec) --- local (x,y) -0.75193901815112, -0.1126497088677 - Layer[0] : time 6.7424477063633 (nsec) --- local (x,y) -0.2743554084881, -1.7378408101429 - Layer[1] : time 8.3754158557791 (nsec) --- local (x,y) 0.24962402554287, 0.047163585505096 - Layer[2] : time 10.050568019184 (nsec) --- local (x,y) 0.40082502793823, 0.053968151623222 - Layer[3] : time 11.72572035018 (nsec) --- local (x,y) 0.53003053447425, 0.049521352593181 - Layer[4] : time 13.400872965262 (nsec) --- local (x,y) 0.65660322206576, 0.080743685502577 + Hodoscope[7] 5.0086959781642 (nsec) +Hodoscope 2 has 3 hits. + Hodoscope[9] 43.374050720197 (nsec) + Hodoscope[18] 217.6501207899 (nsec) + Hodoscope[19] 218.91858150007 (nsec) +Drift Chamber 1 has 11 hits. + Layer[0] : time 6.7002644798776 (nsec) --- local (x,y) -0.071862776736101, -0.012545178927011 + Layer[1] : time 8.3754166977221 (nsec) --- local (x,y) -0.19553030487882, 0.0085972037236424 + Layer[2] : time 10.050569037499 (nsec) --- local (x,y) -0.30693391879988, 0.0047818975168233 + Layer[3] : time 11.725721607845 (nsec) --- local (x,y) -0.39582585900997, 0.016117520803638 + Layer[4] : time 13.400874309734 (nsec) --- local (x,y) -0.48911263547565, 0.071198497793194 + Layer[4] : time 13.401141039653 (nsec) --- local (x,y) -0.48912828863459, 0.071208072138275 + Layer[4] : time 13.401141039653 (nsec) --- local (x,y) -0.48912828863459, 0.071208072138275 + Layer[4] : time 13.402365476388 (nsec) --- local (x,y) -0.5369236112086, 0.099366248532667 + Layer[4] : time 13.40359827437 (nsec) --- local (x,y) -0.56456081652595, 0.12151459296626 + Layer[4] : time 13.404833865849 (nsec) --- local (x,y) -0.60513163921988, 0.1514978795553 + Layer[4] : time 13.406081629432 (nsec) --- local (x,y) -0.63417548852971, 0.17777821228653 Drift Chamber 2 has 5 hits. - Layer[0] : time 35.005203217654 (nsec) --- local (x,y) -145.30110861536, 0.51359029601556 - Layer[1] : time 36.683271092126 (nsec) --- local (x,y) -174.80261251404, 0.6118070098701 - Layer[2] : time 38.361341705834 (nsec) --- local (x,y) -204.3174962571, 0.70203810155656 - Layer[3] : time 40.039409388463 (nsec) --- local (x,y) -233.81666884052, 0.81699126241973 - Layer[4] : time 41.717473976593 (nsec) --- local (x,y) -263.29931749806, 0.97070048014547 -EM Calorimeter has 41 hits. Total Edep is 395.80259660881 (MeV) -Hadron Calorimeter has 11 hits. Total Edep is 392.00091914218 (MeV) + Layer[0] : time 35.000084615089 (nsec) --- local (x,y) -148.83959257331, 0.79502527927149 + Layer[1] : time 36.67816693559 (nsec) --- local (x,y) -178.41060680741, 0.84289048981068 + Layer[2] : time 38.356247102609 (nsec) --- local (x,y) -207.96972355697, 0.87183902159087 + Layer[3] : time 40.034328805296 (nsec) --- local (x,y) -237.53596304323, 0.89818340390376 + Layer[4] : time 41.712411181129 (nsec) --- local (x,y) -267.10508056906, 0.93158821627259 +EM Calorimeter has 40 hits. Total Edep is 3918.4152233378 (MeV) +Hadron Calorimeter has 15 hits. Total Edep is 121.6157459241 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 4 starts. @@ -838,55 +845,48 @@ Hadron Calorimeter has 11 hits. Total Edep is 392.00091914218 (MeV) >>> Event 0 >>> Simulation truth : pi+ (0,0,10000) Hodoscope 1 has 1 hits. - Hodoscope[7] 4.9872691974578 (nsec) -Hodoscope 2 has 2 hits. - Hodoscope[10] 42.702970663437 (nsec) - Hodoscope[24] 721.85817154953 (nsec) -Drift Chamber 1 has 11 hits. - Layer[0] : time 6.6715985140163 (nsec) --- local (x,y) 0.22708631699285, -0.033127255077166 - Layer[1] : time 8.3395816065067 (nsec) --- local (x,y) 0.31624828349558, 0.00070722916280885 - Layer[1] : time 8.3400173527352 (nsec) --- local (x,y) 0.31626411430509, 0.00071470013426226 - Layer[1] : time 8.3400173527352 (nsec) --- local (x,y) 0.31626411430509, 0.00071470013426226 - Layer[1] : time 8.3408473760227 (nsec) --- local (x,y) 0.33553000478112, -0.013868925942679 - Layer[1] : time 8.3416628157422 (nsec) --- local (x,y) 0.35628486867372, -0.011363693426813 - Layer[1] : time 8.3424192751358 (nsec) --- local (x,y) 0.36201382669143, -0.0079112452610069 - Layer[1] : time 8.3430999616267 (nsec) --- local (x,y) 0.3411190151528, -0.0022046850363111 - Layer[2] : time 10.007564690897 (nsec) --- local (x,y) 0.38190475103156, 0.037990060627481 - Layer[3] : time 11.675547789563 (nsec) --- local (x,y) 0.45791544962993, 0.095014242479761 - Layer[4] : time 13.343530917216 (nsec) --- local (x,y) 0.56027293068062, 0.17356338083017 + Hodoscope[7] 4.9872691707719 (nsec) +Hodoscope 2 has 1 hits. + Hodoscope[10] 42.696618500096 (nsec) +Drift Chamber 1 has 5 hits. + Layer[0] : time 6.6715984927879 (nsec) --- local (x,y) -0.082837231592975, 0.04944048977156 + Layer[1] : time 8.3395815824438 (nsec) --- local (x,y) -0.15096015681268, 0.081699529615861 + Layer[2] : time 10.007564675043 (nsec) --- local (x,y) -0.21362603449286, 0.12222302695776 + Layer[3] : time 11.675547784255 (nsec) --- local (x,y) -0.30578380864103, 0.15115106477119 + Layer[4] : time 13.343530890844 (nsec) --- local (x,y) -0.38454404028322, 0.18781426738261 Drift Chamber 2 has 5 hits. - Layer[0] : time 34.374621898715 (nsec) --- local (x,y) -83.053062397131, 1.3016957052318 - Layer[1] : time 36.04356324081 (nsec) --- local (x,y) -100.00345257613, 1.3714328523349 - Layer[2] : time 37.712504325901 (nsec) --- local (x,y) -116.95146072739, 1.4590343253476 - Layer[3] : time 39.381446565907 (nsec) --- local (x,y) -133.90969700681, 1.5377762593779 - Layer[4] : time 41.050386115545 (nsec) --- local (x,y) -150.84408840734, 1.618432545199 -EM Calorimeter has 47 hits. Total Edep is 524.15943164886 (MeV) -Hadron Calorimeter has 14 hits. Total Edep is 406.66516486067 (MeV) + Layer[0] : time 34.368500945316 (nsec) --- local (x,y) -83.024730387729, 1.0591113858417 + Layer[1] : time 36.03739622027 (nsec) --- local (x,y) -99.562190012806, 1.170409356275 + Layer[2] : time 37.706292386774 (nsec) --- local (x,y) -116.10779830096, 1.2668603663207 + Layer[3] : time 39.375187156461 (nsec) --- local (x,y) -132.64080480869, 1.3449543850159 + Layer[4] : time 41.044080683267 (nsec) --- local (x,y) -149.16247332949, 1.4278452697575 +EM Calorimeter has 25 hits. Total Edep is 334.74343673243 (MeV) +Hadron Calorimeter has 11 hits. Total Edep is 447.16220924026 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 5 starts. ... open Root analysis file : B5.root - done --> Event 0 starts. ->>> Event 0 >>> Simulation truth : e+ (0,0,10000) +>>> Event 0 >>> Simulation truth : e+ (-0,0,10000) Hodoscope 1 has 1 hits. - Hodoscope[7] 4.9867832273852 (nsec) + Hodoscope[7] 4.9867832295911 (nsec) Hodoscope 2 has 1 hits. - Hodoscope[9] 43.186998670107 (nsec) + Hodoscope[9] 43.187374962447 (nsec) Drift Chamber 1 has 5 hits. - Layer[0] : time 6.6709483552597 (nsec) --- local (x,y) -0.044873410036236, -0.021745678776476 - Layer[1] : time 8.3387688371693 (nsec) --- local (x,y) -0.07367135142319, -0.051769398748918 - Layer[2] : time 10.006589317336 (nsec) --- local (x,y) -0.10316535513976, -0.067893145812969 - Layer[3] : time 11.674409799419 (nsec) --- local (x,y) -0.14028847270745, -0.052331495347836 - Layer[4] : time 13.342230282141 (nsec) --- local (x,y) -0.12382800953284, -0.032583943475133 + Layer[0] : time 6.6709483824427 (nsec) --- local (x,y) 0.11121114795455, 0.074995191201279 + Layer[1] : time 8.3387688875343 (nsec) --- local (x,y) 0.20357566607055, 0.064157384864912 + Layer[2] : time 10.006589397115 (nsec) --- local (x,y) 0.2921334455771, 0.01749915728382 + Layer[3] : time 11.674409911499 (nsec) --- local (x,y) 0.38855903028354, -0.029435713247206 + Layer[4] : time 13.342230422292 (nsec) --- local (x,y) 0.47799667049322, -0.077655998157023 Drift Chamber 2 has 5 hits. - Layer[0] : time 34.849710634589 (nsec) --- local (x,y) -147.3428125198, -0.38728392182004 - Layer[1] : time 36.520445268025 (nsec) --- local (x,y) -176.91307185223, -0.4606529322214 - Layer[2] : time 38.19117740297 (nsec) --- local (x,y) -206.47066967494, -0.52172155977786 - Layer[3] : time 39.861907632547 (nsec) --- local (x,y) -236.01860332466, -0.57294705344584 - Layer[4] : time 41.532640713441 (nsec) --- local (x,y) -265.5809465667, -0.65776495427846 -EM Calorimeter has 15 hits. Total Edep is 9607.088851876 (MeV) -Hadron Calorimeter has 2 hits. Total Edep is 0.10662279969555 (MeV) + Layer[0] : time 34.850048310945 (nsec) --- local (x,y) -147.2288807249, 0.9665419195464 + Layer[1] : time 36.520790933986 (nsec) --- local (x,y) -176.83962144191, 1.0613495418595 + Layer[2] : time 38.191530159775 (nsec) --- local (x,y) -206.4331668726, 1.1440297458961 + Layer[3] : time 39.862269465857 (nsec) --- local (x,y) -236.02709065866, 1.2367203326667 + Layer[4] : time 41.533010668785 (nsec) --- local (x,y) -265.63061153345, 1.3372300135845 +EM Calorimeter has 19 hits. Total Edep is 9589.8225386839 (MeV) +Hadron Calorimeter has 2 hits. Total Edep is 1.365193125069 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 6 starts. @@ -895,22 +895,37 @@ Hadron Calorimeter has 2 hits. Total Edep is 0.10662279969555 (MeV) >>> Event 0 >>> Simulation truth : proton (0,0,1000) Hodoscope 1 has 1 hits. - Hodoscope[7] 6.8393061014307 (nsec) + Hodoscope[7] 6.8394764683804 (nsec) Hodoscope 2 has 1 hits. - Hodoscope[8] 59.305402217203 (nsec) -Drift Chamber 1 has 5 hits. - Layer[0] : time 9.1532800613073 (nsec) --- local (x,y) -1.5331033506414, -0.83741059797509 - Layer[1] : time 11.44511904836 (nsec) --- local (x,y) -4.0102946429866, -1.6032958981604 - Layer[2] : time 13.737167403474 (nsec) --- local (x,y) -6.3552025478878, -2.6713933069003 - Layer[3] : time 16.029427368714 (nsec) --- local (x,y) -8.8392634337743, -3.8881534996225 - Layer[4] : time 18.322006011564 (nsec) --- local (x,y) -11.35469293527, -5.1681132024151 + Hodoscope[9] 59.417191745868 (nsec) +Drift Chamber 1 has 20 hits. + Layer[0] : time 9.1538005980911 (nsec) --- local (x,y) 1.0353914070225, -0.1074210949406 + Layer[1] : time 11.445916597795 (nsec) --- local (x,y) 1.7998243892741, -0.40405063540515 + Layer[1] : time 11.448527831649 (nsec) --- local (x,y) 1.7860883347195, -0.35765807784042 + Layer[1] : time 11.449471581089 (nsec) --- local (x,y) 1.7868705367285, -0.34775091999936 + Layer[1] : time 11.450426671074 (nsec) --- local (x,y) 1.7792897826329, -0.3179158868672 + Layer[1] : time 11.451371790704 (nsec) --- local (x,y) 1.7601147655692, -0.3232758713196 + Layer[1] : time 11.452233701582 (nsec) --- local (x,y) 1.7391635291922, -0.32685472723819 + Layer[1] : time 11.45294268096 (nsec) --- local (x,y) 1.7533653068349, -0.31555020400454 + Layer[1] : time 11.451707999435 (nsec) --- local (x,y) 1.7802139259374, -0.28504917845148 + Layer[1] : time 11.452430085078 (nsec) --- local (x,y) 1.7770700136373, -0.27248818189926 + Layer[1] : time 11.453101780814 (nsec) --- local (x,y) 1.7834113244294, -0.26694844743705 + Layer[2] : time 13.738236759505 (nsec) --- local (x,y) 2.615870308577, -0.82271348813167 + Layer[2] : time 13.777569061819 (nsec) --- local (x,y) 1.9877349645222, -0.89721262422182 + Layer[2] : time 13.778429540115 (nsec) --- local (x,y) 1.9772443144622, -0.89236537038058 + Layer[2] : time 13.779275623649 (nsec) --- local (x,y) 2.0000837506068, -0.88950439034656 + Layer[2] : time 13.780098277013 (nsec) --- local (x,y) 2.0105593323191, -0.90673823467793 + Layer[2] : time 13.780908660317 (nsec) --- local (x,y) 2.0144503682481, -0.90914049223321 + Layer[2] : time 13.781574126461 (nsec) --- local (x,y) 1.9989595795501, -0.89599689003804 + Layer[3] : time 16.030806853161 (nsec) --- local (x,y) 3.246286186425, -1.1534707050085 + Layer[4] : time 18.323728275196 (nsec) --- local (x,y) 4.5318196835492, -1.4575056428132 Drift Chamber 2 has 5 hits. - Layer[0] : time 47.824612095067 (nsec) --- local (x,y) -197.63107830889, -40.597007703963 - Layer[1] : time 50.125030598482 (nsec) --- local (x,y) -229.48068561103, -43.753109830494 - Layer[2] : time 52.425518902757 (nsec) --- local (x,y) -260.94866096816, -46.913441398369 - Layer[3] : time 54.72607186723 (nsec) --- local (x,y) -291.97688519446, -50.147086811707 - Layer[4] : time 57.026868384991 (nsec) --- local (x,y) -323.22504582015, -53.448559131012 -EM Calorimeter has 1 hits. Total Edep is 289.917249117 (MeV) + Layer[0] : time 47.937120206692 (nsec) --- local (x,y) -145.38091952578, -2.9991647010153 + Layer[1] : time 50.237392708553 (nsec) --- local (x,y) -176.34805514123, -2.5115963006969 + Layer[2] : time 52.537749055696 (nsec) --- local (x,y) -206.91937686256, -2.1138069740789 + Layer[3] : time 54.838292950333 (nsec) --- local (x,y) -237.39911353456, -1.9190464909547 + Layer[4] : time 57.13894957402 (nsec) --- local (x,y) -267.66626286366, -2.0304156819697 +EM Calorimeter has 1 hits. Total Edep is 296.43922371921 (MeV) Hadron Calorimeter has 0 hits. Total Edep is 0 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done @@ -918,46 +933,55 @@ Hadron Calorimeter has 0 hits. Total Edep is 0 (MeV) ... open Root analysis file : B5.root - done --> Event 0 starts. ->>> Event 0 >>> Simulation truth : pi+ (0,0,1000) +>>> Event 0 >>> Simulation truth : pi+ (-0,0,1000) Hodoscope 1 has 1 hits. - Hodoscope[7] 5.0351636851138 (nsec) + Hodoscope[7] 5.0351627088432 (nsec) Hodoscope 2 has 1 hits. - Hodoscope[10] 43.103374472116 (nsec) -Drift Chamber 1 has 5 hits. - Layer[0] : time 6.7357377486258 (nsec) --- local (x,y) -0.071533791910032, -0.29468775161084 - Layer[1] : time 8.4198120188085 (nsec) --- local (x,y) -0.004523399578002, -0.3244941719791 - Layer[2] : time 10.103890210432 (nsec) --- local (x,y) -0.045064687912385, -0.30760977744324 - Layer[3] : time 11.787971987897 (nsec) --- local (x,y) -0.046037239937897, -0.54576260900741 - Layer[4] : time 13.472056400652 (nsec) --- local (x,y) -0.1876682765696, -0.64160000302751 + Hodoscope[10] 43.038260795811 (nsec) +Drift Chamber 1 has 6 hits. + Layer[0] : time 6.7357371073471 (nsec) --- local (x,y) -0.30812596116005, 2.683789320426 + Layer[1] : time 8.4198138685197 (nsec) --- local (x,y) -1.735006234667, 4.4897247850999 + Layer[2] : time 10.103926360928 (nsec) --- local (x,y) -3.0921848416713, 5.8030923635906 + Layer[2] : time 10.412456725515 (nsec) --- local (x,y) 151.07120697796, 202.11585011836 + Layer[3] : time 11.788060633361 (nsec) --- local (x,y) -4.4879358008225, 6.8205221609245 + Layer[4] : time 13.472199155779 (nsec) --- local (x,y) -5.9704804115177, 7.7162435077224 Drift Chamber 2 has 5 hits. - Layer[0] : time 34.693685386585 (nsec) --- local (x,y) -93.053558337398, 1.0098543135531 - Layer[1] : time 36.378922211233 (nsec) --- local (x,y) -111.20869195357, 1.4794495486141 - Layer[2] : time 38.064154238318 (nsec) --- local (x,y) -129.30030689744, 1.8778615269631 - Layer[3] : time 39.749399020364 (nsec) --- local (x,y) -147.47256847918, 2.3253739603835 - Layer[4] : time 41.434637142485 (nsec) --- local (x,y) -165.57561913752, 2.7856009012148 -EM Calorimeter has 12 hits. Total Edep is 483.57309401956 (MeV) -Hadron Calorimeter has 0 hits. Total Edep is 0 (MeV) + Layer[0] : time 34.63059035243 (nsec) --- local (x,y) -95.835814001505, 21.657014433361 + Layer[1] : time 36.315452886262 (nsec) --- local (x,y) -110.08672478467, 22.906491803055 + Layer[2] : time 38.00029923256 (nsec) --- local (x,y) -124.1262345713, 24.160165188475 + Layer[3] : time 39.68511754656 (nsec) --- local (x,y) -137.82296898497, 25.576299466487 + Layer[4] : time 41.36993339497 (nsec) --- local (x,y) -151.44830504663, 27.045934876937 +EM Calorimeter has 3 hits. Total Edep is 171.86070994599 (MeV) +Hadron Calorimeter has 8 hits. Total Edep is 34.564510128906 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done ### Run 8 starts. ... open Root analysis file : B5.root - done --> Event 0 starts. ->>> Event 0 >>> Simulation truth : e+ (0,0,1000) +>>> Event 0 >>> Simulation truth : e+ (-0,0,1000) Hodoscope 1 has 1 hits. - Hodoscope[7] 4.9867839724388 (nsec) -Hodoscope 2 has 0 hits. -Drift Chamber 1 has 8 hits. - Layer[0] : time 6.670967072297 (nsec) --- local (x,y) 2.2162094983281, 0.074595463657648 - Layer[1] : time 8.3388041640953 (nsec) --- local (x,y) 4.35944353279, 0.40940935813171 - Layer[2] : time 10.006640243998 (nsec) --- local (x,y) 6.4391241922726, 0.69118208456899 - Layer[2] : time 10.212307080593 (nsec) --- local (x,y) 1.9711970288808, 14.505062368829 - Layer[2] : time 10.228997176995 (nsec) --- local (x,y) 1.1545486944502, 15.715487958813 - Layer[2] : time 10.268456197652 (nsec) --- local (x,y) 0.46351648967476, 18.646153800785 - Layer[3] : time 11.674477773254 (nsec) --- local (x,y) 8.5857254567148, 1.1422908352084 - Layer[4] : time 13.342313758427 (nsec) --- local (x,y) 10.604238193927, 1.6794442688535 -Drift Chamber 2 has 0 hits. -EM Calorimeter has 0 hits. Total Edep is 0 (MeV) + Hodoscope[7] 4.9867836883726 (nsec) +Hodoscope 2 has 1 hits. + Hodoscope[9] 43.179612735348 (nsec) +Drift Chamber 1 has 5 hits. + Layer[0] : time 6.6709520543309 (nsec) --- local (x,y) 0.87609284926643, -0.44356555759158 + Layer[1] : time 8.3387764756531 (nsec) --- local (x,y) 1.206009534285, -1.4732679230682 + Layer[2] : time 10.006603083421 (nsec) --- local (x,y) 1.4166377567668, -2.8120434448028 + Layer[3] : time 11.67442968851 (nsec) --- local (x,y) 1.281855088577, -4.1507025108518 + Layer[4] : time 13.342258293381 (nsec) --- local (x,y) 0.85345423461259, -5.6506746950978 +Drift Chamber 2 has 10 hits. + Layer[0] : time 34.838851609108 (nsec) --- local (x,y) -169.73091863662, -29.922016318334 + Layer[0] : time 34.976513671829 (nsec) --- local (x,y) -152.75724597388, -26.799467084496 + Layer[0] : time 34.978237714834 (nsec) --- local (x,y) -152.7108581005, -26.867804696168 + Layer[0] : time 34.978237714834 (nsec) --- local (x,y) -152.7108581005, -26.867804696168 + Layer[0] : time 34.979066349137 (nsec) --- local (x,y) -152.70431711623, -26.84991821803 + Layer[0] : time 34.979809339925 (nsec) --- local (x,y) -152.69496447035, -26.841629757741 + Layer[1] : time 36.510214663904 (nsec) --- local (x,y) -202.19842193278, -32.926131272965 + Layer[2] : time 38.181631231296 (nsec) --- local (x,y) -234.9179221494, -35.870355038189 + Layer[3] : time 39.853028589215 (nsec) --- local (x,y) -267.55439757613, -38.756019800825 + Layer[4] : time 41.524463481165 (nsec) --- local (x,y) -300.3718549648, -41.442057034826 +EM Calorimeter has 11 hits. Total Edep is 986.03562863051 (MeV) Hadron Calorimeter has 0 hits. Total Edep is 0 (MeV) ... write Root file : B5.root - done ... close Root file : B5.root - done diff --git a/examples/extended/biasing/B01/exampleB01.out b/examples/extended/biasing/B01/exampleB01.out index b55a7ad8e5e..f48c6c9ee01 100644 --- a/examples/extended/biasing/B01/exampleB01.out +++ b/examples/extended/biasing/B01/exampleB01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/biasing/B03/exampleB03.out b/examples/extended/biasing/B03/exampleB03.out index 15538e7d506..03f4b9963cc 100644 --- a/examples/extended/biasing/B03/exampleB03.out +++ b/examples/extended/biasing/B03/exampleB03.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -438,7 +438,7 @@ hIoni: for pi- SubType= 2 *** G4Exception : GeomBias1001 issued by : G4ImportanceAlgorithm::Warning() Calculate() - ipre_over_ipost ! in [0.25, 4]. -ipre_over_ipost = 65536. +ipre_over_ipost = 131072. *** This is just a warning message. *** -------- WWWW -------- G4Exception-END --------- WWWW ------- @@ -458,26 +458,26 @@ ipre_over_ipost = 65536. ============================================================= ============================================================= Volume | Tr.Entering | Population | Collisions | Coll*WGT | NumWGTedE | FluxWGTedE | Av.Tr.WGT | SL | SLW | SLW_v | SLWE | SLWE_v | - cell_00 | 31 | 129 | 0 | 0 | 0.369216 | 1.57615 | 1 | 5616.72 | 5616.72 | 1130.1 | 8852.78 | 417.251 | - cell_01 | 144 | 178 | 486 | 486 | 0.644329 | 4.55259 | 1 | 22479.7 | 22479.7 | 4440.83 | 102341 | 2861.35 | - cell_02 | 162 | 280 | 1196 | 598 | 0.278841 | 2.80969 | 0.5 | 44352 | 22176 | 7048.91 | 62307.6 | 1965.52 | - cell_03 | 228 | 378 | 2112 | 528 | 0.184223 | 2.09767 | 0.25 | 67969.5 | 16992.4 | 6586.89 | 35644.3 | 1213.46 | - cell_04 | 299 | 454 | 2610 | 326.25 | 0.16325 | 1.77489 | 0.125 | 83092.3 | 10386.5 | 4151.61 | 18434.9 | 677.751 | - cell_05 | 316 | 493 | 2860 | 178.75 | 0.111552 | 1.50409 | 0.0625 | 86223.3 | 5388.96 | 2708.25 | 8105.45 | 302.11 | - cell_06 | 280 | 447 | 2640 | 82.5 | 0.121013 | 1.53154 | 0.03125 | 80334.6 | 2510.46 | 1207.05 | 3844.85 | 146.068 | - cell_07 | 284 | 432 | 2231 | 34.8594 | 0.146346 | 1.76818 | 0.015625 | 72160.3 | 1127.5 | 506.183 | 1993.63 | 74.0779 | - cell_08 | 266 | 454 | 2357 | 18.4141 | 0.154696 | 1.72116 | 0.0078125 | 74803.3 | 584.401 | 246.59 | 1005.84 | 38.1467 | - cell_09 | 282 | 429 | 2422 | 9.46094 | 0.158783 | 1.66284 | 0.00390625 | 77900.3 | 304.298 | 124.016 | 505.998 | 19.6916 | - cell_10 | 337 | 512 | 2929 | 5.7207 | 0.128719 | 1.48721 | 0.00195312 | 89002.9 | 173.834 | 79.4635 | 258.527 | 10.2285 | - cell_11 | 331 | 520 | 3059 | 2.9873 | 0.121086 | 1.32214 | 0.000976562 | 92135.5 | 89.9761 | 40.9646 | 118.961 | 4.96026 | - cell_12 | 312 | 462 | 2724 | 1.33008 | 0.10574 | 1.23879 | 0.000488281 | 78913.3 | 38.5319 | 18.9283 | 47.7328 | 2.00147 | - cell_13 | 276 | 433 | 2605 | 0.635986 | 0.112097 | 1.35858 | 0.000244141 | 75453.1 | 18.4212 | 8.87827 | 25.0266 | 0.995224 | - cell_14 | 232 | 348 | 1961 | 0.23938 | 0.143663 | 1.50714 | 0.00012207 | 62760.4 | 7.66119 | 3.27271 | 11.5465 | 0.470168 | - cell_15 | 250 | 370 | 2009 | 0.12262 | 0.124836 | 1.37239 | 6.10352e-05 | 63675.3 | 3.88643 | 1.77439 | 5.33368 | 0.221508 | - cell_16 | 220 | 333 | 1942 | 0.0592651 | 0.103253 | 1.20573 | 3.05176e-05 | 58938.9 | 1.79867 | 0.904297 | 2.16872 | 0.093371 | - cell_17 | 194 | 289 | 1681 | 0.02565 | 0.0879834 | 1.10112 | 1.52588e-05 | 50183.3 | 0.765736 | 0.413126 | 0.843164 | 0.0363482 | - cell_18 | 129 | 249 | 1395 | 0.010643 | 0.0968177 | 1.16499 | 7.62939e-06 | 42290.8 | 0.322654 | 0.165238 | 0.375887 | 0.015998 | - cell_19 | 93 | 93 | 0 | 0 | 0.149838 | 1.72353 | 7.62939e-06 | 15591.1 | 0.11895 | 0.053451 | 0.205014 | 0.00800901 | + cell_00 | 41 | 134 | 0 | 0 | 0.377147 | 2.29349 | 1 | 6751.59 | 6751.59 | 1585.06 | 15484.7 | 597.8 | + cell_01 | 141 | 192 | 565 | 565 | 0.544342 | 4.17809 | 1 | 24691.9 | 24691.9 | 5370.4 | 103165 | 2923.33 | + cell_02 | 151 | 259 | 1182 | 591 | 0.32886 | 3.09982 | 0.5 | 40063.3 | 20031.7 | 5775.84 | 62094.6 | 1899.44 | + cell_03 | 236 | 355 | 1862 | 465.5 | 0.175627 | 2.22848 | 0.25 | 63104.9 | 15776.2 | 6596.83 | 35157.1 | 1158.58 | + cell_04 | 257 | 406 | 2307 | 288.375 | 0.157331 | 1.89834 | 0.125 | 71675.8 | 8959.47 | 3829.36 | 17008.2 | 602.479 | + cell_05 | 288 | 438 | 2377 | 148.562 | 0.156435 | 1.90059 | 0.0625 | 75757.3 | 4734.83 | 2048.3 | 8998.95 | 320.425 | + cell_06 | 306 | 474 | 2440 | 76.25 | 0.14463 | 1.77039 | 0.03125 | 78315.2 | 2447.35 | 1102.11 | 4332.77 | 159.398 | + cell_07 | 291 | 448 | 2613 | 40.8281 | 0.12654 | 1.50905 | 0.015625 | 80600.1 | 1259.38 | 580.373 | 1900.46 | 73.4405 | + cell_08 | 294 | 449 | 2488 | 19.4375 | 0.128756 | 1.54071 | 0.0078125 | 79091.5 | 617.903 | 286.892 | 952.009 | 36.9389 | + cell_09 | 259 | 413 | 2195 | 8.57422 | 0.132061 | 1.41883 | 0.00390625 | 68477 | 267.488 | 115.408 | 379.52 | 15.241 | + cell_10 | 227 | 364 | 2097 | 4.0957 | 0.119802 | 1.41866 | 0.00195312 | 64518.2 | 126.012 | 59.6434 | 178.768 | 7.14538 | + cell_11 | 209 | 321 | 1751 | 1.70996 | 0.116256 | 1.45276 | 0.000976562 | 53892.2 | 52.6291 | 25.7414 | 76.4572 | 2.9926 | + cell_12 | 184 | 293 | 1642 | 0.801758 | 0.139021 | 1.48755 | 0.000488281 | 51196.2 | 24.9981 | 10.9127 | 37.186 | 1.51709 | + cell_13 | 200 | 284 | 1673 | 0.408447 | 0.124475 | 1.16414 | 0.000244141 | 49832.7 | 12.1662 | 5.21975 | 14.1632 | 0.649729 | + cell_14 | 177 | 260 | 1689 | 0.206177 | 0.0952068 | 0.884148 | 0.00012207 | 49320.9 | 6.02061 | 2.84912 | 5.32311 | 0.271256 | + cell_15 | 142 | 228 | 1426 | 0.0870361 | 0.0681638 | 0.771918 | 6.10352e-05 | 42532.3 | 2.59596 | 1.51284 | 2.00387 | 0.103121 | + cell_16 | 121 | 189 | 1045 | 0.0318909 | 0.103475 | 1.10768 | 3.05176e-05 | 32581.9 | 0.994321 | 0.48305 | 1.10139 | 0.0499836 | + cell_17 | 110 | 182 | 1022 | 0.0155945 | 0.139719 | 1.2747 | 1.52588e-05 | 32276.5 | 0.492501 | 0.200874 | 0.627793 | 0.028066 | + cell_18 | 62 | 128 | 558 | 0.0042572 | 0.158266 | 1.43176 | 7.62939e-06 | 17550.8 | 0.133902 | 0.0520459 | 0.191715 | 0.0082371 | + cell_19 | 38 | 38 | 0 | 0 | 0.401398 | 2.33829 | 7.62939e-06 | 5996.05 | 0.0457463 | 0.0102505 | 0.106968 | 0.00411451 | ============================================= === G4ProcessPlacer::RemoveProcess: for: neutron ProcessName: ImportanceProcess, will be removed! diff --git a/examples/extended/biasing/GB01/exampleGB01.out b/examples/extended/biasing/GB01/exampleGB01.out index cd7d3196a1d..86dc3326b52 100644 --- a/examples/extended/biasing/GB01/exampleGB01.out +++ b/examples/extended/biasing/GB01/exampleGB01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -28,10 +28,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/biasing/GB02/exampleGB02.out b/examples/extended/biasing/GB02/exampleGB02.out index 451b8b92f04..5e0843c737f 100644 --- a/examples/extended/biasing/GB02/exampleGB02.out +++ b/examples/extended/biasing/GB02/exampleGB02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -28,10 +28,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/electromagnetic/TestEm0/TestEm0.out b/examples/extended/electromagnetic/TestEm0/TestEm0.out index ce7453dfdde..ac6c1748348 100644 --- a/examples/extended/electromagnetic/TestEm0/TestEm0.out +++ b/examples/extended/electromagnetic/TestEm0/TestEm0.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.out b/examples/extended/electromagnetic/TestEm1/TestEm1.out index cdce1304aae..51519aa3e73 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.out +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -323,7 +323,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 2000 - User=4.85s Real=4.86s Sys=0s + User=5.25s Real=5.35s Sys=0s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.out b/examples/extended/electromagnetic/TestEm10/TestEm10.out index 70e15edab8c..f49b2a4a088 100644 --- a/examples/extended/electromagnetic/TestEm10/TestEm10.out +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -224,7 +224,7 @@ Lorentz Factor XTR photon number 8.085e+04 3.149 9.283e+04 3.149 -total time for build X-ray TR energy loss tables = 0.08 s +total time for build X-ray TR energy loss tables = 0.09 s msc: for proton SubType= 10 RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1 @@ -396,7 +396,7 @@ Index : 2 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000 - User=1.3s Real=1.31s Sys=0s + User=1.34s Real=1.35s Sys=0s ================== run summary ===================== end of Run TotNbofEvents = 1000 mean charged track length in absorber=45.6176 +- 0.734311 mm diff --git a/examples/extended/electromagnetic/TestEm11/TestEm11.out b/examples/extended/electromagnetic/TestEm11/TestEm11.out index a95c7e8aac3..eadcc11ad11 100644 --- a/examples/extended/electromagnetic/TestEm11/TestEm11.out +++ b/examples/extended/electromagnetic/TestEm11/TestEm11.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -452,7 +452,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 20000 - User=5.09s Real=5.12s Sys=0s + User=6.19s Real=6.21s Sys=0s ======================== run summary ===================== diff --git a/examples/extended/electromagnetic/TestEm12/TestEm12.out b/examples/extended/electromagnetic/TestEm12/TestEm12.out index 1bcb0844ecd..a4eab81aabc 100644 --- a/examples/extended/electromagnetic/TestEm12/TestEm12.out +++ b/examples/extended/electromagnetic/TestEm12/TestEm12.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -125,7 +125,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=4.14s Real=4.16s Sys=0s + User=3.7s Real=3.73s Sys=0s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm13/TestEm13.out b/examples/extended/electromagnetic/TestEm13/TestEm13.out index fb6c897bb02..c5a4550edae 100644 --- a/examples/extended/electromagnetic/TestEm13/TestEm13.out +++ b/examples/extended/electromagnetic/TestEm13/TestEm13.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -431,7 +431,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 1000000 - User=9.79s Real=10.29s Sys=0s + User=9.61s Real=9.64s Sys=0s The run consists of 1000000 gamma of 100 keV through 1 cm of Water (density: 1 g/cm3 ) @@ -507,7 +507,7 @@ Index : 0 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000000 - User=10.5s Real=10.71s Sys=0s + User=12.01s Real=12.05s Sys=0s The run consists of 1000000 e- of 100 MeV through 1 cm of Water (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm14/TestEm14.out b/examples/extended/electromagnetic/TestEm14/TestEm14.out index cda89d662f9..0bfb5788b45 100644 --- a/examples/extended/electromagnetic/TestEm14/TestEm14.out +++ b/examples/extended/electromagnetic/TestEm14/TestEm14.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -471,7 +471,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 1000000 - User=16.47s Real=16.56s Sys=0s + User=20.87s Real=20.94s Sys=0.01s The run consists of 1000000 gamma of 100 keV through 100 m of Water (density: 1 g/cm3 ) @@ -549,7 +549,7 @@ Index : 0 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000000 - User=15.43s Real=15.53s Sys=0s + User=16.23s Real=16.28s Sys=0s The run consists of 1000000 e- of 100 MeV through 100 m of Water (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm15/TestEm15.out b/examples/extended/electromagnetic/TestEm15/TestEm15.out index 440a757f39b..9d9ce1c86a5 100644 --- a/examples/extended/electromagnetic/TestEm15/TestEm15.out +++ b/examples/extended/electromagnetic/TestEm15/TestEm15.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -491,7 +491,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=0.24s Real=0.25s Sys=0s + User=0.22s Real=0.23s Sys=0s The run consists of 10000 e- of 5 MeV through 100 m of Water (density: 1 g/cm3 ) @@ -564,7 +564,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10000 - User=0.29s Real=0.3s Sys=0s + User=0.27s Real=0.28s Sys=0s The run consists of 10000 e- of 100 keV through 100 m of Water (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm16/TestEm16.out b/examples/extended/electromagnetic/TestEm16/TestEm16.out index 1bd085dd731..5de8c1512a7 100644 --- a/examples/extended/electromagnetic/TestEm16/TestEm16.out +++ b/examples/extended/electromagnetic/TestEm16/TestEm16.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -265,7 +265,7 @@ G4SynchrotronRadiation::GetRandomEnergySR : Run terminated. Run Summary Number of events processed : 100 - User=0.8s Real=0.79s Sys=0s + User=0.84s Real=0.85s Sys=0s Summary for synchrotron radiation : Number of photons = 64554 Emean = 20.24 +/- 0.1449 keV diff --git a/examples/extended/electromagnetic/TestEm17/TestEm17.out b/examples/extended/electromagnetic/TestEm17/TestEm17.out index 16a6b9dc892..584e60ea1c7 100644 --- a/examples/extended/electromagnetic/TestEm17/TestEm17.out +++ b/examples/extended/electromagnetic/TestEm17/TestEm17.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -303,7 +303,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=3.69s Real=3.71s Sys=0s + User=3.94s Real=3.97s Sys=0s The run consists of 10000 mu+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) @@ -374,7 +374,7 @@ Index : 0 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10000 - User=3.31s Real=3.32s Sys=0s + User=3.5s Real=3.52s Sys=0s The run consists of 10000 pi+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) @@ -444,7 +444,7 @@ Index : 0 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10000 - User=3.36s Real=3.38s Sys=0s + User=3.85s Real=3.86s Sys=0s The run consists of 10000 proton of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm18/TestEm18.out b/examples/extended/electromagnetic/TestEm18/TestEm18.out index feb95e36d49..84e889b302e 100644 --- a/examples/extended/electromagnetic/TestEm18/TestEm18.out +++ b/examples/extended/electromagnetic/TestEm18/TestEm18.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -457,7 +457,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 100000 - User=2.74s Real=2.77s Sys=0.01s + User=2.72s Real=2.75s Sys=0s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.out b/examples/extended/electromagnetic/TestEm2/TestEm2.out index 4827c9c2499..21668ef309e 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.out +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -542,7 +542,7 @@ Index : 0 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 100 - User=8.25s Real=8.27s Sys=0s + User=8.37s Real=8.4s Sys=0s ===== SUMMARY ===== diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.out b/examples/extended/electromagnetic/TestEm3/TestEm3.out index 1a150cf3d97..64f2b41a9e9 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.out +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -489,7 +489,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 100 - User=6.04s Real=6.1s Sys=0s + User=7.38s Real=7.4s Sys=0s ------------------------------------------------------------ material Edep RMS sqrt(E0(GeV))*rmsE/Emean total tracklen @@ -929,7 +929,7 @@ Index : 2 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 100 - User=5.52s Real=5.55s Sys=0s + User=6.42s Real=6.44s Sys=0s ------------------------------------------------------------ material Edep RMS sqrt(E0(GeV))*rmsE/Emean total tracklen diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.out b/examples/extended/electromagnetic/TestEm4/TestEm4.out index b83283bdd21..8b0041d5b34 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.out +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -139,7 +139,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 100000 - User=2.88s Real=2.97s Sys=0s + User=3.11s Real=3.21s Sys=0s --------- Ranecu engine status --------- Initial seed (index) = 0 diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.out b/examples/extended/electromagnetic/TestEm5/TestEm5.out index d525ed1d65f..781a3a74ddb 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.out +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -453,7 +453,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 100000 - User=4.49s Real=4.62s Sys=0.01s + User=4.91s Real=4.93s Sys=0.01s ======================== run summary ====================== @@ -921,7 +921,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 50000 - User=3.67s Real=3.7s Sys=0s + User=4.42s Real=4.43s Sys=0s ======================== run summary ====================== @@ -1400,7 +1400,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 50000 - User=7.5s Real=7.88s Sys=0s + User=8.11s Real=8.15s Sys=0s ======================== run summary ====================== @@ -1878,7 +1878,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 50000 - User=2.29s Real=2.32s Sys=0s + User=2.73s Real=2.75s Sys=0s ======================== run summary ====================== @@ -2360,7 +2360,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 50000 - User=25.84s Real=25.94s Sys=0.01s + User=27.12s Real=27.37s Sys=0.02s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.out b/examples/extended/electromagnetic/TestEm6/TestEm6.out index d0894e8883c..b06fbd60d01 100644 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.out +++ b/examples/extended/electromagnetic/TestEm6/TestEm6.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm7/TestEm7.out b/examples/extended/electromagnetic/TestEm7/TestEm7.out index 18ded1c4523..273e3c74b07 100644 --- a/examples/extended/electromagnetic/TestEm7/TestEm7.out +++ b/examples/extended/electromagnetic/TestEm7/TestEm7.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -525,7 +525,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10000 - User=17.83s Real=17.98s Sys=0s + User=18.34s Real=18.44s Sys=0s The run consists of 10000 proton of 160 MeV through 20 cm of G4_WATER (density: 1 g/cm3 ) @@ -584,7 +584,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000 - User=7.85s Real=7.97s Sys=0.01s + User=7.54s Real=7.58s Sys=0.01s The run consists of 1000 C12 of 3.5 GeV through 20 cm of G4_WATER (density: 1 g/cm3 ) @@ -1084,7 +1084,7 @@ Index : 2 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000 - User=3.63s Real=3.69s Sys=0s + User=3.85s Real=3.86s Sys=0s The run consists of 1000 kaon+ of 100 MeV through 20 cm of G4_Cu (density: 8.96 g/cm3 ) @@ -1578,7 +1578,7 @@ Index : 3 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 100 - User=0.01s Real=0.01s Sys=0s + User=0s Real=0.01s Sys=0s The run consists of 100 alpha of 265 eV through 20 cm of TechVacuum (density: 0.01 kg/m3 ) @@ -2072,7 +2072,7 @@ Index : 3 used in the geometry : No Run terminated. Run Summary Number of events processed : 100 - User=0.03s Real=0.03s Sys=0s + User=0.04s Real=0.04s Sys=0s The run consists of 100 alpha of 100 MeV through 20 cm of G4_WATER (density: 1 g/cm3 ) @@ -2470,7 +2470,7 @@ Index : 4 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10 - User=6.5s Real=6.53s Sys=0.01s + User=9.15s Real=9.21s Sys=0.01s The run consists of 10 Xe131 of 1.217 GeV through 20 cm of G4_Si (density: 2.33 g/cm3 ) @@ -2876,7 +2876,7 @@ Index : 5 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 1000 - User=1.63s Real=1.74s Sys=0s + User=1.85s Real=1.85s Sys=0s The run consists of 1000 proton of 160 MeV through 20 cm of Water_1.05 (density: 1.05 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.out b/examples/extended/electromagnetic/TestEm8/TestEm8.out index 2c5e3ac46ec..61e34c2eb44 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.out +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -841,7 +841,7 @@ HistoManager: Histograms are booked and run has been started Run terminated. Run Summary Number of events processed : 1000 - User=0.28s Real=0.28s Sys=0s + User=0.21s Real=0.21s Sys=0s RunAction: End of run actions are started ================== run summary ===================== End of Run TotNbofEvents = 1000 diff --git a/examples/extended/electromagnetic/TestEm9/TestEm9.out b/examples/extended/electromagnetic/TestEm9/TestEm9.out index 379f9794541..659b85d13f6 100644 --- a/examples/extended/electromagnetic/TestEm9/TestEm9.out +++ b/examples/extended/electromagnetic/TestEm9/TestEm9.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -448,7 +448,7 @@ EventAction: Event # 0 started Run terminated. Run Summary Number of events processed : 100 - User=2.33s Real=2.35s Sys=0s + User=2.99s Real=3.08s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started RunID# 0 ================================================================= @@ -568,7 +568,7 @@ EventAction: Event # 900 started Run terminated. Run Summary Number of events processed : 1000 - User=4.06s Real=4.24s Sys=0.01s + User=4.84s Real=4.9s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started RunID# 1 ================================================================= @@ -1028,7 +1028,7 @@ EventAction: Event # 0 started Run terminated. Run Summary Number of events processed : 100 - User=1.9s Real=1.94s Sys=0s + User=2.09s Real=2.09s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started RunID# 2 ================================================================= @@ -1491,7 +1491,7 @@ EventAction: Event # 0 started Run terminated. Run Summary Number of events processed : 100 - User=1.71s Real=1.71s Sys=0s + User=2.4s Real=2.41s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started RunID# 3 ================================================================= diff --git a/examples/extended/field/field01/field01.out b/examples/extended/field/field01/field01.out index 10b3109cfcc..c0a7f602c45 100644 --- a/examples/extended/field/field01/field01.out +++ b/examples/extended/field/field01/field01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -214,10 +214,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -448,7 +450,7 @@ Step# X Y Z Direction x dir y dir Run terminated. Run Summary Number of events processed : 1 - User=0.01s Real=0s Sys=0s + User=0s Real=0s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -655,7 +657,7 @@ WARNING: Scene "none" not found. Run terminated. Run Summary Number of events processed : 100 - User=0s Real=0s Sys=0s + User=0s Real=0.01s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field02/field02.out b/examples/extended/field/field02/field02.out index ee1923c1870..b5dafa5519e 100644 --- a/examples/extended/field/field02/field02.out +++ b/examples/extended/field/field02/field02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -202,7 +202,7 @@ G4ClassicalRK4 (default) is called The minimal step is equal to 0.01 mm F02PhysicsList::SetCuts:CutLength : 1 mm -total time(SetCuts)=0 s +total time(SetCuts)=0.01 s Visualization Manager instantiating with verbosity "warnings (3)"... Visualization Manager initialising... Registering graphics systems... @@ -213,10 +213,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -4833,7 +4835,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne Run terminated. Run Summary Number of events processed : 100 - User=0.08s Real=0.14s Sys=0.02s + User=0.09s Real=0.13s Sys=0.01s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field03/field03.out b/examples/extended/field/field03/field03.out index 3ec64fd4c18..be339fc0d1c 100644 --- a/examples/extended/field/field03/field03.out +++ b/examples/extended/field/field03/field03.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -220,10 +220,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -488,7 +490,7 @@ WARNING: Scene "none" not found. Run terminated. Run Summary Number of events processed : 100 - User=0.02s Real=0.03s Sys=0s + User=0.03s Real=0.02s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Set field value to (0,0,1000) Gauss diff --git a/examples/extended/field/field04/field04.out b/examples/extended/field/field04/field04.out index 568182ee691..36e40173697 100644 --- a/examples/extended/field/field04/field04.out +++ b/examples/extended/field/field04/field04.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -30,10 +30,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -2103,13 +2105,13 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 0 5.92 cm -5.74 cm 2.76 cm 28 MeV 0 eV 0 fm 0 fm CaptureMgnt initStep 1 -7.1158644 cm -3.7210164 cm -2 m 28.02773 MeV1.0668247e-15 eV 19.182859 m 19.182859 m CaptureMgnt Transportation 2 -5.5254067 cm -2.9022192 cm -2.0019024 m 28.016547 MeV 4.2687604 keV 1.7989382 cm 19.200848 m World muIoni - 3 -9.7493027 mm -5.5766418 mm -2.0074406 m 28.00458 MeV 10.856812 keV 5.1488459 cm 19.252337 m World muIoni - 4 4.6359228 mm 1.843346 mm -2.0092077 m 27.997007 MeV 5.7936907 keV 1.6282323 cm 19.268619 m World muIoni - 5 4.5089145 cm 2.2641804 cm -2.0140604 m 27.981097 MeV 12.448653 keV 4.5744904 cm 19.314364 m World muIoni + 3 -9.7493024 mm -5.5766423 mm -2.0074406 m 28.00458 MeV 10.856812 keV 5.1488459 cm 19.252337 m World muIoni + 4 4.635923 mm 1.8433455 mm -2.0092077 m 27.997007 MeV 5.7936907 keV 1.6282323 cm 19.268619 m World muIoni + 5 4.5089145 cm 2.2641803 cm -2.0140604 m 27.981097 MeV 12.448653 keV 4.5744904 cm 19.314364 m World muIoni 6 5.5507226 cm 2.7999267 cm -2.0153092 m 27.964291 MeV 3.2250588 keV 1.1781272 cm 19.326145 m World muIoni - 7 9.5229284 cm 4.850676 cm -2.0201769 m 27.951409 MeV 11.693982 keV 4.4967784 cm 19.371113 m World muIoni - 8 17.971665 cm 9.2109506 cm -2.0303639 m 27.928781 MeV 21.324806 keV 9.5619955 cm 19.466733 m World muIoni - 9 19.072027 cm 9.7782056 cm -2.0316634 m 27.923371 MeV 3.3083563 keV 1.2447747 cm 19.479181 m World muIoni + 7 9.5229284 cm 4.8506759 cm -2.0201769 m 27.951409 MeV 11.693982 keV 4.4967784 cm 19.371113 m World muIoni + 8 17.971665 cm 9.2109505 cm -2.0303639 m 27.928781 MeV 21.324806 keV 9.5619955 cm 19.466733 m World muIoni + 9 19.072028 cm 9.7782055 cm -2.0316634 m 27.923371 MeV 3.3083563 keV 1.2447747 cm 19.479181 m World muIoni 10 25.711301 cm 13.182973 cm -2.0393738 m 27.899435 MeV 22.592873 keV 7.5011529 cm 19.554192 m World muIoni 11 38.254303 cm 19.543523 cm -2.0540305 m 27.858292 MeV 38.532537 keV 14.139826 cm 19.695591 m World muIoni 12 38.716608 cm 19.776123 cm -2.0545655 m 27.85487 MeV 2.1777041 keV 5.20278 mm 19.700793 m World muIoni @@ -2133,7 +2135,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 30 95.301782 cm 47.828543 cm -2.1252037 m 27.62077 MeV 3.3840005 keV 1.1717681 cm 20.336315 m World muIoni 31 97.774169 cm 49.024916 cm -2.1284979 m 27.60883 MeV 5.6647662 keV 2.7663233 cm 20.363978 m World muIoni 32 99.446544 cm 49.828465 cm -2.1307393 m 27.597235 MeV 4.9609671 keV 1.8688964 cm 20.382667 m World muIoni - 33 99.748456 cm 49.973576 cm -2.1311375 m 27.595022 MeV 1.1921212 keV 3.3733248 mm 20.386041 m World muIoni + 33 99.748456 cm 49.973575 cm -2.1311375 m 27.595022 MeV 1.1921212 keV 3.3733248 mm 20.386041 m World muIoni 34 1.0231039 m 51.214314 cm -2.1344031 m 27.562858 MeV 8.5376664 keV 2.8652421 cm 20.414693 m World muIoni 35 1.1076757 m 55.265873 cm -2.1450084 m 27.536635 MeV 23.78167 keV 9.4374075 cm 20.509067 m World muIoni 36 1.13106 m 56.373934 cm -2.1479592 m 27.529267 MeV 5.8066628 keV 2.6044491 cm 20.535112 m World muIoni @@ -2164,12 +2166,12 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 61 1.7123813 m 84.049522 cm -2.2167788 m 27.303025 MeV 2.3338659 keV 7.9141138 mm 21.182633 m World muIoni 62 1.7126936 m 84.064196 cm -2.2168138 m 27.30153 MeV 51.496718 eV 346.79675 um 21.18298 m World muIoni 63 1.7376653 m 85.239218 cm -2.2196415 m 27.292819 MeV 7.2563872 keV 2.7742614 cm 21.210722 m World muIoni - 64 1.8744955 m 91.658817 cm -2.2354406 m 27.245602 MeV 44.974825 keV 15.19658 cm 21.362688 m World muIoni + 64 1.8744955 m 91.658816 cm -2.2354406 m 27.245602 MeV 44.974825 keV 15.19658 cm 21.362688 m World muIoni 65 1.8788563 m 91.86269 cm -2.2359534 m 27.243449 MeV 1.0856149 keV 4.8410818 mm 21.367529 m World muIoni 66 1.9150732 m 93.552386 cm -2.2400363 m 27.230812 MeV 11.153942 keV 4.0173101 cm 21.407702 m World muIoni 67 2.0003314 m 97.555426 cm -2.2496406 m 27.206644 MeV 24.168116 keV 9.4676876 cm 21.502379 m World muIoni 68 2.0192635 m 98.444327 cm -2.2518117 m 27.197584 MeV 4.866807 keV 2.10275 cm 21.523407 m World muIoni - 69 2.0221481 m 98.579341 cm -2.2521415 m 27.196781 MeV 803.64219 eV 3.201927 mm 21.526609 m World muIoni + 69 2.0221481 m 98.57934 cm -2.2521415 m 27.196781 MeV 803.64219 eV 3.201927 mm 21.526609 m World muIoni 70 2.0234961 m 98.642429 cm -2.2522956 m 27.195801 MeV 979.73085 eV 1.4962531 mm 21.528105 m World muIoni 71 2.0305578 m 98.973042 cm -2.2531126 m 27.194367 MeV 1.4335154 keV 7.8400339 mm 21.535945 m World muIoni 72 2.0474305 m 99.76124 cm -2.2550975 m 27.187426 MeV 5.6088903 keV 1.8728465 cm 21.554673 m World muIoni @@ -2198,7 +2200,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 95 2.6256185 m 1.2650316 m -2.3192638 m 26.921864 MeV 6.5534366 keV 2.4746474 cm 22.194946 m World muIoni 96 2.6427877 m 1.2729491 m -2.3210547 m 26.915957 MeV 5.9068787 keV 1.8991573 cm 22.213938 m World muIoni 97 2.6434367 m 1.2732473 m -2.3211244 m 26.914584 MeV 208.1832 eV 717.59367 um 22.214655 m World muIoni - 98 2.7059996 m 1.3019817 m -2.327611 m 26.892351 MeV 18.778806 keV 6.9151185 cm 22.283806 m World muIoni + 98 2.7059996 m 1.3019816 m -2.327611 m 26.892351 MeV 18.778806 keV 6.9151185 cm 22.283806 m World muIoni 99 2.7242838 m 1.3103808 m -2.3294624 m 26.885319 MeV 5.5439135 keV 2.0206095 cm 22.304012 m World muIoni 100 2.783852 m 1.3374236 m -2.3356359 m 26.865917 MeV 19.402086 keV 6.5710408 cm 22.369723 m World muIoni 101 2.8066199 m 1.3477252 m -2.3379681 m 26.855761 MeV 6.8619538 keV 2.5098651 cm 22.394822 m World muIoni @@ -4358,131 +4360,131 @@ Track (trackID 4, parentID 1) is processed with stopping code 2 Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 13.8 cm -6.94 cm -44.4 cm 37.3 MeV 0 eV 0 fm 0 fm CaptureMgnt initStep 1 3.2887675 cm -1.5236145 cm -2 m 37.26494 MeV4.2805776e-16 eV 9.1357985 m 9.1357985 m CaptureMgnt Transportation - 2 3.900796 mm 2.8771254 cm -2.0091539 m 37.250481 MeV 13.064096 keV 5.3485434 cm 9.189284 m World muIoni - 3 -1.83935 cm 6.265626 cm -2.0161461 m 37.238085 MeV 10.075593 keV 4.1159745 cm 9.2304437 m World muIoni - 4 -13.292643 cm 23.566725 cm -2.0506857 m 37.190353 MeV 46.319121 keV 21.034486 cm 9.4407886 m World muIoni - 5 -15.685494 cm 27.149716 cm -2.0575727 m 37.17791 MeV 11.131978 keV 4.3632458 cm 9.484421 m World muIoni - 6 -20.641396 cm 34.528362 cm -2.0719814 m 37.153315 MeV 18.290544 keV 9.0045499 cm 9.5744665 m World muIoni - 7 -21.041734 cm 35.12311 cm -2.0731468 m 37.148203 MeV 1.2522871 keV 7.2634325 mm 9.58173 m World muIoni - 8 -28.711347 cm 46.558931 cm -2.0959296 m 37.11644 MeV 31.763925 keV 13.956833 cm 9.7212983 m World muIoni - 9 -33.485464 cm 53.651416 cm -2.1102422 m 37.052688 MeV 21.149525 keV 8.6685886 cm 9.8079842 m World muIoni - 10 -36.410993 cm 57.944546 cm -2.1191908 m 37.034474 MeV 14.687581 keV 5.2718288 cm 9.8607025 m World muIoni - 11 -36.723827 cm 58.396257 cm -2.1201617 m 37.023962 MeV 1.5715157 keV 5.5797406 mm 9.8662822 m World muIoni - 12 -46.704267 cm 72.791415 cm -2.1511328 m 36.983154 MeV 40.807825 keV 17.788349 cm 10.044166 m World muIoni - 13 -47.534604 cm 73.987537 cm -2.1537282 m 36.979626 MeV 3.5282493 keV 1.4790307 cm 10.058956 m World muIoni - 14 -54.605341 cm 84.157144 cm -2.1760713 m 36.933726 MeV 32.119119 keV 12.586087 cm 10.184817 m World muIoni - 15 -55.004769 cm 84.729967 cm -2.1773313 m 36.92912 MeV 1.8069383 keV 7.0960908 mm 10.191913 m World muIoni - 16 -55.643022 cm 85.643884 cm -2.1793499 m 36.925353 MeV 2.6384907 keV 1.1328535 cm 10.203242 m World muIoni - 17 -56.442661 cm 86.788478 cm -2.1818652 m 36.921375 MeV 2.3974939 keV 1.4187279 cm 10.217429 m World muIoni - 18 -56.627893 cm 87.053317 cm -2.1824463 m 36.920619 MeV 755.83816 eV 3.2836971 mm 10.220712 m World muIoni - 19 -62.266945 cm 95.306875 cm -2.2002436 m 36.893318 MeV 25.531565 keV 10.153284 cm 10.322245 m World muIoni - 20 -64.98985 cm 99.31764 cm -2.2088944 m 36.874171 MeV 10.40772 keV 4.9243102 cm 10.371488 m World muIoni - 21 -71.361238 cm 1.0867759 m -2.2288982 m 36.838234 MeV 29.219819 keV 11.498074 cm 10.486469 m World muIoni - 22 -73.20011 cm 1.1137095 m -2.2347049 m 36.82997 MeV 6.9635858 keV 3.3125235 cm 10.519594 m World muIoni - 23 -74.088232 cm 1.1267388 m -2.237533 m 36.816729 MeV 2.899305 keV 1.601993 cm 10.535614 m World muIoni - 24 -76.331948 cm 1.159485 m -2.2446683 m 36.807169 MeV 7.2732624 keV 4.0331817 cm 10.575946 m World muIoni - 25 -87.722397 cm 1.3258215 m -2.2807612 m 36.761503 MeV 40.433846 keV 20.480555 cm 10.780752 m World muIoni - 26 -88.065479 cm 1.3308227 m -2.2818751 m 36.759033 MeV 1.1686878 keV 6.1663241 mm 10.786918 m World muIoni - 27 -92.213481 cm 1.3905348 m -2.2956925 m 36.738899 MeV 19.031604 keV 7.4008554 cm 10.860927 m World muIoni - 28 -93.368509 cm 1.4070203 m -2.2996123 m 36.732307 MeV 4.2477563 keV 2.0507214 cm 10.881434 m World muIoni - 29 -93.542653 cm 1.4095052 m -2.3002071 m 36.729405 MeV 1.0599072 keV 3.0920413 mm 10.884526 m World muIoni - 30 -95.485078 cm 1.4372352 m -2.3067704 m 36.720059 MeV 8.2885397 keV 3.4486755 cm 10.919013 m World muIoni - 31 -1.0034243 m 1.506888 m -2.3230658 m 36.697408 MeV 22.651779 keV 8.6466664 cm 11.005479 m World muIoni - 32 -1.0061758 m 1.5108655 m -2.3239858 m 36.696021 MeV 1.3869277 keV 4.923113 mm 11.010402 m World muIoni - 33 -1.0276429 m 1.5419486 m -2.3311517 m 36.685867 MeV 8.1487973 keV 3.8449344 cm 11.048852 m World muIoni - 34 -1.028075 m 1.542575 m -2.3312954 m 36.681047 MeV 12.905742 eV 774.39528 um 11.049626 m World muIoni - 35 -1.0466641 m 1.5695666 m -2.3374752 m 36.672252 MeV 7.3399129 keV 3.3351074 cm 11.082977 m World muIoni - 36 -1.0624987 m 1.5926065 m -2.3426528 m 36.665434 MeV 6.8183032 keV 2.8432042 cm 11.111409 m World muIoni - 37 -1.0694679 m 1.602757 m -2.3449189 m 36.663917 MeV 1.516704 keV 1.2519435 cm 11.123929 m World muIoni - 38 -1.0992525 m 1.6463669 m -2.3546957 m 36.65011 MeV 12.555202 keV 5.3707973 cm 11.177637 m World muIoni - 39 -1.103787 m 1.6530204 m -2.3561963 m 36.647093 MeV 2.0141912 keV 8.1903591 mm 11.185827 m World muIoni - 40 -1.1096592 m 1.6616328 m -2.3581553 m 36.64148 MeV 1.1496562 keV 1.0606268 cm 11.196433 m World muIoni - 41 -1.1106146 m 1.663032 m -2.3584762 m 36.637877 MeV 1.0400907 keV 1.7244718 mm 11.198158 m World muIoni - 42 -1.1373916 m 1.7024974 m -2.3675472 m 36.626228 MeV 10.568849 keV 4.8547015 cm 11.246705 m World muIoni - 43 -1.1584784 m 1.7335919 m -2.3746817 m 36.613053 MeV 9.9136505 keV 3.8241669 cm 11.284946 m World muIoni - 44 -1.1691996 m 1.7493268 m -2.3783007 m 36.608081 MeV 3.9104371 keV 1.9381161 cm 11.304328 m World muIoni - 45 -1.1922415 m 1.7830467 m -2.386085 m 36.598136 MeV 5.6728344 keV 4.157589 cm 11.345903 m World muIoni - 46 -1.2015322 m 1.7966328 m -2.3891949 m 36.591225 MeV 3.2910285 keV 1.675027 cm 11.362654 m World muIoni - 47 -1.2404917 m 1.8534863 m -2.402178 m 36.573387 MeV 13.761254 keV 7.0133745 cm 11.432787 m World muIoni - 48 -1.2594866 m 1.8810674 m -2.4085024 m 36.563906 MeV 8.1784028 keV 3.4081129 cm 11.466869 m World muIoni - 49 -1.3008196 m 1.941109 m -2.4222638 m 36.196417 MeV 17.262531 keV 7.4180997 cm 11.54105 m World muIoni - 50 -1.3101105 m 1.9545455 m -2.4254121 m 36.189984 MeV 4.2352191 keV 1.6636429 cm 11.557686 m World muIoni - 51 -1.3118827 m 1.9571111 m -2.4260126 m 36.178366 MeV 442.52708 eV 3.175448 mm 11.560861 m World muIoni - 52 -1.3448346 m 2.0050596 m -2.4373442 m 36.163918 MeV 12.977906 keV 5.9273125 cm 11.620135 m World muIoni - 53 -1.3471594 m 2.008453 m -2.4381544 m 36.161344 MeV 1.3187242 keV 4.1924546 mm 11.624327 m World muIoni - 54 -1.367626 m 2.0389103 m -2.4454893 m 36.149222 MeV 9.2788223 keV 3.7423171 cm 11.66175 m World muIoni - 55 -1.4017201 m 2.0910363 m -2.4581219 m 36.136599 MeV 11.580089 keV 6.3554094 cm 11.725304 m World muIoni - 56 -1.4277713 m 2.1307285 m -2.4678014 m 36.114824 MeV 14.035491 keV 4.8454484 cm 11.773759 m World muIoni - 57 -1.4290451 m 2.1326732 m -2.4682752 m 36.112642 MeV 205.13214 eV 2.3724882 mm 11.776131 m World muIoni - 58 -1.4454297 m 2.1577236 m -2.4743301 m 36.103332 MeV 6.7089714 keV 3.0539189 cm 11.80667 m World muIoni - 59 -1.4613116 m 2.1821267 m -2.480157 m 36.093512 MeV 6.1749818 keV 2.969339 cm 11.836364 m World muIoni - 60 -1.4960433 m 2.2357312 m -2.4929233 m 36.058138 MeV 13.952748 keV 6.513629 cm 11.9015 m World muIoni - 61 -1.504854 m 2.249372 m -2.4961688 m 36.053981 MeV 4.1570918 keV 1.6560008 cm 11.91806 m World muIoni - 62 -1.517828 m 2.2693861 m -2.5009246 m 36.046721 MeV 6.0835015 keV 2.4320913 cm 11.942381 m World muIoni - 63 -1.5178853 m 2.2694743 m -2.5009455 m 36.046716 MeV 5.0962832 eV 107.16566 um 11.942488 m World muIoni - 64 -1.5182483 m 2.2700337 m -2.5010783 m 36.02812 MeV 150.85182 eV 680.04086 um 11.943168 m World muIoni - 65 -1.519756 m 2.2723513 m -2.501627 m 36.024919 MeV 956.35536 eV 2.8187596 mm 11.945987 m World muIoni - 66 -1.5360811 m 2.2974838 m -2.5075816 m 36.017876 MeV 5.3414449 keV 3.0554987 cm 11.976542 m World muIoni - 67 -1.5364614 m 2.2980667 m -2.5077197 m 36.017717 MeV 159.31865 eV 709.5844 um 11.977252 m World muIoni - 68 -1.5670036 m 2.3447777 m -2.5188125 m 35.998379 MeV 16.611022 keV 5.6901713 cm 12.034153 m World muIoni - 69 -1.5738299 m 2.355196 m -2.5212681 m 35.984118 MeV 1.7693627 keV 1.2695233 cm 12.046849 m World muIoni - 70 -1.5936508 m 2.3855821 m -2.5284447 m 35.968556 MeV 8.795884 keV 3.6982291 cm 12.083831 m World muIoni - 71 -1.5961475 m 2.389412 m -2.5293575 m 35.955998 MeV 871.55814 eV 4.6620907 mm 12.088493 m World muIoni - 72 -1.6390095 m 2.4553271 m -2.5450636 m 35.937676 MeV 15.966988 keV 8.0178938 cm 12.168672 m World muIoni - 73 -1.6453548 m 2.465079 m -2.5474119 m 35.934345 MeV 2.2705277 keV 1.1869218 cm 12.180541 m World muIoni - 74 -1.655186 m 2.4802296 m -2.551098 m 35.927909 MeV 5.3644574 keV 1.8433127 cm 12.198974 m World muIoni - 75 -1.6897666 m 2.533383 m -2.564061 m 35.913061 MeV 14.847444 keV 6.4723628 cm 12.263698 m World muIoni - 76 -1.7015006 m 2.5514233 m -2.5684603 m 35.900448 MeV 6.2562827 keV 2.1965725 cm 12.285664 m World muIoni - 77 -1.7231469 m 2.5848086 m -2.5765697 m 35.887438 MeV 13.010576 keV 4.0606763 cm 12.32627 m World muIoni - 78 -1.8210963 m 2.7356841 m -2.6130168 m 35.840945 MeV 45.087759 keV 18.353837 cm 12.509809 m World muIoni - 79 -1.8746131 m 2.8178141 m -2.6328701 m 35.817091 MeV 22.740181 keV 10.001795 cm 12.609827 m World muIoni - 80 -1.9368799 m 2.9136585 m -2.655963 m 35.785531 MeV 27.818279 keV 11.660483 cm 12.726431 m World muIoni - 81 -1.9413417 m 2.9205203 m -2.6576213 m 35.773021 MeV 2.4107265 keV 8.3511915 mm 12.734783 m World muIoni - 82 -1.9422226 m 2.9218792 m -2.6579487 m 35.764015 MeV 581.34231 eV 1.6521823 mm 12.736435 m World muIoni - 83 -1.951191 m 2.935736 m -2.6612859 m 35.761337 MeV 2.6780976 keV 1.683977 cm 12.753275 m World muIoni - 84 -1.9694733 m 2.9640696 m -2.6681613 m 35.749757 MeV 6.4530759 keV 3.4413869 cm 12.787689 m World muIoni - 85 -1.9837243 m 2.986233 m -2.6735588 m 35.743045 MeV 5.3746065 keV 2.689681 cm 12.814585 m World muIoni - 86 -1.9913416 m 2.9980901 m -2.6764323 m 35.739449 MeV 2.5451074 keV 1.4383023 cm 12.828968 m World muIoni - 87 -1.9926221 m 3.0000854 m -2.6769169 m 35.73817 MeV 1.2793854 keV 2.4198844 mm 12.831388 m World muIoni - 88 -2.0064657 m 3.0216543 m -2.6821367 m 35.730817 MeV 5.6207221 keV 2.6155496 cm 12.857544 m World muIoni - 89 -2.008755 m 3.0252313 m -2.6830023 m 35.72901 MeV 398.40857 eV 4.3342147 mm 12.861878 m World muIoni - 90 -2.0114685 m 3.0294701 m -2.6840285 m 35.726412 MeV 793.07632 eV 5.1364991 mm 12.867014 m World muIoni - 91 -2.0151899 m 3.0352779 m -2.6854311 m 35.723599 MeV 1.4678022 keV 7.0389355 mm 12.874053 m World muIoni - 92 -2.0422845 m 3.0773852 m -2.6957025 m 35.714526 MeV 9.0735845 keV 5.111402 cm 12.925167 m World muIoni - 93 -2.0768505 m 3.1309529 m -2.7086754 m 35.696272 MeV 16.002557 keV 6.5058608 cm 12.990226 m World muIoni - 94 -2.0934322 m 3.1566409 m -2.7148607 m 35.689721 MeV 5.2340095 keV 3.1194352 cm 13.02142 m World muIoni - 95 -2.1040361 m 3.1730738 m -2.7188164 m 35.68427 MeV 4.0889279 keV 1.9953201 cm 13.041374 m World muIoni - 96 -2.1173682 m 3.1937134 m -2.7238236 m 35.676509 MeV 7.76155 keV 2.507611 cm 13.06645 m World muIoni - 97 -2.1372111 m 3.2245179 m -2.7313085 m 35.662376 MeV 10.327806 keV 3.7398945 cm 13.103849 m World muIoni - 98 -2.1569164 m 3.254948 m -2.7386976 m 35.649391 MeV 11.456491 keV 3.699856 cm 13.140847 m World muIoni - 99 -2.1913753 m 3.3080837 m -2.751772 m 35.634383 MeV 13.979759 keV 6.4666606 cm 13.205514 m World muIoni - 100 -2.1922327 m 3.3094032 m -2.7520956 m 35.62914 MeV 216.27534 eV 1.6066266 mm 13.20712 m World muIoni - 101 -2.2252291 m 3.3603358 m -2.7644805 m 35.611604 MeV 15.325504 keV 6.1937787 cm 13.269058 m World muIoni - 102 -2.249419 m 3.3977338 m -2.7734807 m 35.599962 MeV 10.559251 keV 4.5439742 cm 13.314498 m World muIoni - 103 -2.326324 m 3.5166559 m -2.8018048 m 35.567328 MeV 31.34585 keV 14.44275 cm 13.458925 m World muIoni - 104 -2.3373086 m 3.5336366 m -2.8058865 m 35.559699 MeV 5.9010876 keV 2.063172 cm 13.479557 m World muIoni - 105 -2.3720489 m 3.587691 m -2.8186504 m 35.538758 MeV 18.018212 keV 6.5511582 cm 13.545069 m World muIoni - 106 -2.3917231 m 3.6187907 m -2.8259341 m 35.526508 MeV 11.22534 keV 3.7514271 cm 13.582583 m World muIoni - 107 -2.4010967 m 3.6336278 m -2.8294132 m 35.521117 MeV 4.1398281 keV 1.7891537 cm 13.600475 m World muIoni - 108 -2.4384355 m 3.6928735 m -2.8434283 m 35.489029 MeV 15.450791 keV 7.1419143 cm 13.671894 m World muIoni - 109 -2.4653905 m 3.7355929 m -2.8535447 m 35.473604 MeV 12.822822 keV 5.1515604 cm 13.723409 m World muIoni - 110 -2.473344 m 3.7482511 m -2.8565016 m 35.456004 MeV 4.417207 keV 1.5239255 cm 13.738649 m World muIoni - 111 -2.4812934 m 3.760874 m -2.8594453 m 35.45037 MeV 1.7880617 keV 1.5205135 cm 13.753854 m World muIoni - 112 -2.4915162 m 3.7771389 m -2.8632696 m 35.437776 MeV 4.4487682 keV 1.9587653 cm 13.773441 m World muIoni - 113 -2.507347 m 3.80236 m -2.8692125 m 35.430391 MeV 4.4117896 keV 3.0365129 cm 13.803806 m World muIoni - 114 -2.509881 m 3.8064123 m -2.8701605 m 35.426748 MeV 855.34061 eV 4.872385 mm 13.808679 m World muIoni - 115 -2.5374134 m 3.8505219 m -2.8805217 m 35.413036 MeV 12.355417 keV 5.3019384 cm 13.861698 m World muIoni - 116 -2.5435504 m 3.8603613 m -2.8828385 m 35.391807 MeV 3.6430576 keV 1.1825591 cm 13.873524 m World muIoni - 117 -2.5507242 m 3.8718835 m -2.8855649 m 35.386012 MeV 3.2448366 keV 1.3844055 cm 13.887368 m World muIoni - 118 -2.5745952 m 3.9100518 m -2.894637 m 35.3688 MeV 11.543092 keV 4.5923295 cm 13.933291 m World muIoni - 119 -2.6187913 m 3.9801796 m -2.9112935 m 35.341474 MeV 22.783208 keV 8.4549921 cm 14.017841 m World muIoni - 120 -2.6280999 m 3.9948885 m -2.9147741 m 35.335701 MeV 4.5792491 keV 1.7751515 cm 14.035593 m World muIoni - 121 -2.682981 m 4.0815917 m -2.9355268 m 35.303062 MeV 25.143974 keV 10.469061 cm 14.140283 m World muIoni - 122 -2.6996958 m 4.1080298 m -2.9418739 m 35.29548 MeV 6.0296411 keV 3.1916231 cm 14.172199 m World muIoni - 123 -2.7157029 m 4.1332238 m -2.9479432 m 35.285788 MeV 7.7870866 keV 3.0459859 cm 14.202659 m World muIoni - 124 -2.7179005 m 4.1366736 m -2.9487795 m 35.282879 MeV 1.7781436 keV 4.174908 mm 14.206834 m World muIoni - 125 -2.7249326 m 4.1477137 m -2.9514474 m 35.278096 MeV 3.0563925 keV 1.335862 cm 14.220193 m World muIoni - 126 -2.7449517 m 4.1791435 m -2.959038 m 35.269196 MeV 8.8997212 keV 3.8029117 cm 14.258222 m OutOfWorld Transportation + 2 3.9008347 mm 2.8771279 cm -2.0091539 m 37.250481 MeV 13.064096 keV 5.3485434 cm 9.189284 m World muIoni + 3 -1.8393431 cm 6.2656305 cm -2.0161461 m 37.238085 MeV 10.075593 keV 4.1159745 cm 9.2304437 m World muIoni + 4 -13.292621 cm 23.56674 cm -2.0506857 m 37.190353 MeV 46.319121 keV 21.034486 cm 9.4407886 m World muIoni + 5 -15.685469 cm 27.149733 cm -2.0575727 m 37.17791 MeV 11.131978 keV 4.3632458 cm 9.484421 m World muIoni + 6 -20.641365 cm 34.528383 cm -2.0719814 m 37.153315 MeV 18.290544 keV 9.0045499 cm 9.5744665 m World muIoni + 7 -21.041701 cm 35.123131 cm -2.0731468 m 37.148203 MeV 1.2522871 keV 7.2634325 mm 9.58173 m World muIoni + 8 -28.711305 cm 46.558959 cm -2.0959296 m 37.11644 MeV 31.763925 keV 13.956833 cm 9.7212983 m World muIoni + 9 -33.485415 cm 53.651448 cm -2.1102422 m 37.052688 MeV 21.149525 keV 8.6685886 cm 9.8079842 m World muIoni + 10 -36.410941 cm 57.944581 cm -2.1191908 m 37.034474 MeV 14.687581 keV 5.2718288 cm 9.8607025 m World muIoni + 11 -36.723775 cm 58.396292 cm -2.1201617 m 37.023962 MeV 1.5715157 keV 5.5797406 mm 9.8662822 m World muIoni + 12 -46.704202 cm 72.791459 cm -2.1511328 m 36.983154 MeV 40.807825 keV 17.788349 cm 10.044166 m World muIoni + 13 -47.534537 cm 73.987582 cm -2.1537282 m 36.979626 MeV 3.5282493 keV 1.4790307 cm 10.058956 m World muIoni + 14 -54.605266 cm 84.157195 cm -2.1760713 m 36.933726 MeV 32.119119 keV 12.586087 cm 10.184817 m World muIoni + 15 -55.004694 cm 84.730018 cm -2.1773313 m 36.92912 MeV 1.8069383 keV 7.0960908 mm 10.191913 m World muIoni + 16 -55.642945 cm 85.643936 cm -2.1793499 m 36.925353 MeV 2.6384907 keV 1.1328535 cm 10.203242 m World muIoni + 17 -56.442584 cm 86.78853 cm -2.1818652 m 36.921375 MeV 2.3974939 keV 1.4187279 cm 10.217429 m World muIoni + 18 -56.627815 cm 87.05337 cm -2.1824463 m 36.920619 MeV 755.83816 eV 3.2836971 mm 10.220712 m World muIoni + 19 -62.26686 cm 95.306933 cm -2.2002436 m 36.893318 MeV 25.531565 keV 10.153284 cm 10.322245 m World muIoni + 20 -64.989762 cm 99.3177 cm -2.2088944 m 36.874171 MeV 10.40772 keV 4.9243102 cm 10.371488 m World muIoni + 21 -71.361141 cm 1.0867766 m -2.2288982 m 36.838234 MeV 29.219819 keV 11.498074 cm 10.486469 m World muIoni + 22 -73.20001 cm 1.1137101 m -2.2347049 m 36.82997 MeV 6.9635858 keV 3.3125235 cm 10.519594 m World muIoni + 23 -74.088131 cm 1.1267395 m -2.237533 m 36.816729 MeV 2.899305 keV 1.601993 cm 10.535614 m World muIoni + 24 -76.331845 cm 1.1594857 m -2.2446683 m 36.807169 MeV 7.2732624 keV 4.0331817 cm 10.575946 m World muIoni + 25 -87.722279 cm 1.3258223 m -2.2807612 m 36.761503 MeV 40.433846 keV 20.480555 cm 10.780752 m World muIoni + 26 -88.065361 cm 1.3308235 m -2.2818751 m 36.759033 MeV 1.1686878 keV 6.1663241 mm 10.786918 m World muIoni + 27 -92.213357 cm 1.3905357 m -2.2956925 m 36.738899 MeV 19.031604 keV 7.4008554 cm 10.860927 m World muIoni + 28 -93.368384 cm 1.4070212 m -2.2996123 m 36.732307 MeV 4.2477563 keV 2.0507214 cm 10.881434 m World muIoni + 29 -93.542528 cm 1.409506 m -2.3002071 m 36.729405 MeV 1.0599072 keV 3.0920413 mm 10.884526 m World muIoni + 30 -95.48495 cm 1.4372361 m -2.3067704 m 36.720059 MeV 8.2885397 keV 3.4486755 cm 10.919013 m World muIoni + 31 -1.003423 m 1.506889 m -2.3230658 m 36.697408 MeV 22.651779 keV 8.6466664 cm 11.005479 m World muIoni + 32 -1.0061745 m 1.5108664 m -2.3239858 m 36.696021 MeV 1.3869277 keV 4.923113 mm 11.010402 m World muIoni + 33 -1.0276416 m 1.5419495 m -2.3311517 m 36.685867 MeV 8.1487973 keV 3.8449344 cm 11.048852 m World muIoni + 34 -1.0280736 m 1.5425759 m -2.3312954 m 36.681047 MeV 12.905742 eV 774.39528 um 11.049626 m World muIoni + 35 -1.0466627 m 1.5695676 m -2.3374752 m 36.672252 MeV 7.3399129 keV 3.3351074 cm 11.082977 m World muIoni + 36 -1.0624973 m 1.5926075 m -2.3426528 m 36.665434 MeV 6.8183032 keV 2.8432042 cm 11.111409 m World muIoni + 37 -1.0694665 m 1.602758 m -2.3449189 m 36.663917 MeV 1.516704 keV 1.2519435 cm 11.123929 m World muIoni + 38 -1.099251 m 1.6463679 m -2.3546957 m 36.65011 MeV 12.555202 keV 5.3707973 cm 11.177637 m World muIoni + 39 -1.1037855 m 1.6530214 m -2.3561963 m 36.647093 MeV 2.0141912 keV 8.1903591 mm 11.185827 m World muIoni + 40 -1.1096577 m 1.6616338 m -2.3581553 m 36.64148 MeV 1.1496562 keV 1.0606268 cm 11.196433 m World muIoni + 41 -1.1106131 m 1.663033 m -2.3584762 m 36.637877 MeV 1.0400907 keV 1.7244718 mm 11.198158 m World muIoni + 42 -1.1373901 m 1.7024984 m -2.3675472 m 36.626228 MeV 10.568849 keV 4.8547015 cm 11.246705 m World muIoni + 43 -1.1584769 m 1.733593 m -2.3746817 m 36.613053 MeV 9.9136505 keV 3.8241669 cm 11.284946 m World muIoni + 44 -1.1691981 m 1.7493279 m -2.3783007 m 36.608081 MeV 3.9104371 keV 1.9381161 cm 11.304328 m World muIoni + 45 -1.1922399 m 1.7830478 m -2.386085 m 36.598136 MeV 5.6728344 keV 4.157589 cm 11.345903 m World muIoni + 46 -1.2015306 m 1.7966339 m -2.3891949 m 36.591225 MeV 3.2910285 keV 1.675027 cm 11.362654 m World muIoni + 47 -1.2404901 m 1.8534874 m -2.402178 m 36.573387 MeV 13.761254 keV 7.0133745 cm 11.432787 m World muIoni + 48 -1.2594849 m 1.8810685 m -2.4085024 m 36.563906 MeV 8.1784028 keV 3.4081129 cm 11.466869 m World muIoni + 49 -1.3008179 m 1.9411102 m -2.4222638 m 36.196417 MeV 17.262531 keV 7.4180997 cm 11.54105 m World muIoni + 50 -1.3101087 m 1.9545467 m -2.4254121 m 36.189984 MeV 4.2352191 keV 1.6636429 cm 11.557686 m World muIoni + 51 -1.311881 m 1.9571123 m -2.4260126 m 36.178366 MeV 442.52708 eV 3.175448 mm 11.560861 m World muIoni + 52 -1.3448328 m 2.0050608 m -2.4373442 m 36.163918 MeV 12.977906 keV 5.9273125 cm 11.620135 m World muIoni + 53 -1.3471576 m 2.0084542 m -2.4381544 m 36.161344 MeV 1.3187242 keV 4.1924546 mm 11.624327 m World muIoni + 54 -1.3676242 m 2.0389116 m -2.4454893 m 36.149222 MeV 9.2788223 keV 3.7423171 cm 11.66175 m World muIoni + 55 -1.4017182 m 2.0910376 m -2.4581219 m 36.136599 MeV 11.580089 keV 6.3554094 cm 11.725304 m World muIoni + 56 -1.4277694 m 2.1307298 m -2.4678014 m 36.114824 MeV 14.035491 keV 4.8454484 cm 11.773759 m World muIoni + 57 -1.4290432 m 2.1326745 m -2.4682752 m 36.112642 MeV 205.13214 eV 2.3724882 mm 11.776131 m World muIoni + 58 -1.4454278 m 2.1577249 m -2.4743301 m 36.103332 MeV 6.7089714 keV 3.0539189 cm 11.80667 m World muIoni + 59 -1.4613096 m 2.182128 m -2.480157 m 36.093512 MeV 6.1749818 keV 2.969339 cm 11.836364 m World muIoni + 60 -1.4960413 m 2.2357326 m -2.4929233 m 36.058138 MeV 13.952748 keV 6.513629 cm 11.9015 m World muIoni + 61 -1.504852 m 2.2493734 m -2.4961688 m 36.053981 MeV 4.1570918 keV 1.6560008 cm 11.91806 m World muIoni + 62 -1.517826 m 2.2693875 m -2.5009246 m 36.046721 MeV 6.0835015 keV 2.4320913 cm 11.942381 m World muIoni + 63 -1.5178832 m 2.2694756 m -2.5009455 m 36.046716 MeV 5.0962832 eV 107.16566 um 11.942488 m World muIoni + 64 -1.5182463 m 2.2700351 m -2.5010783 m 36.02812 MeV 150.85182 eV 680.04086 um 11.943168 m World muIoni + 65 -1.519754 m 2.2723527 m -2.501627 m 36.024919 MeV 956.35536 eV 2.8187596 mm 11.945987 m World muIoni + 66 -1.5360791 m 2.2974851 m -2.5075816 m 36.017876 MeV 5.3414449 keV 3.0554987 cm 11.976542 m World muIoni + 67 -1.5364594 m 2.2980681 m -2.5077197 m 36.017717 MeV 159.31865 eV 709.5844 um 11.977252 m World muIoni + 68 -1.5670015 m 2.3447791 m -2.5188125 m 35.998379 MeV 16.611022 keV 5.6901713 cm 12.034153 m World muIoni + 69 -1.5738278 m 2.3551974 m -2.5212681 m 35.984118 MeV 1.7693627 keV 1.2695233 cm 12.046849 m World muIoni + 70 -1.5936487 m 2.3855835 m -2.5284447 m 35.968556 MeV 8.795884 keV 3.6982291 cm 12.083831 m World muIoni + 71 -1.5961454 m 2.3894134 m -2.5293575 m 35.955998 MeV 871.55814 eV 4.6620907 mm 12.088493 m World muIoni + 72 -1.6390073 m 2.4553286 m -2.5450636 m 35.937676 MeV 15.966988 keV 8.0178938 cm 12.168672 m World muIoni + 73 -1.6453527 m 2.4650805 m -2.5474119 m 35.934345 MeV 2.2705277 keV 1.1869218 cm 12.180541 m World muIoni + 74 -1.6551838 m 2.4802311 m -2.551098 m 35.927909 MeV 5.3644574 keV 1.8433127 cm 12.198974 m World muIoni + 75 -1.6897643 m 2.5333845 m -2.564061 m 35.913061 MeV 14.847444 keV 6.4723628 cm 12.263698 m World muIoni + 76 -1.7014983 m 2.5514248 m -2.5684603 m 35.900448 MeV 6.2562827 keV 2.1965725 cm 12.285664 m World muIoni + 77 -1.7231446 m 2.5848102 m -2.5765697 m 35.887438 MeV 13.010576 keV 4.0606763 cm 12.32627 m World muIoni + 78 -1.8210939 m 2.7356858 m -2.6130168 m 35.840945 MeV 45.087759 keV 18.353837 cm 12.509809 m World muIoni + 79 -1.8746106 m 2.8178158 m -2.6328701 m 35.817091 MeV 22.740181 keV 10.001795 cm 12.609827 m World muIoni + 80 -1.9368773 m 2.9136602 m -2.655963 m 35.785531 MeV 27.818279 keV 11.660483 cm 12.726431 m World muIoni + 81 -1.9413391 m 2.9205221 m -2.6576213 m 35.773021 MeV 2.4107265 keV 8.3511915 mm 12.734783 m World muIoni + 82 -1.94222 m 2.9218809 m -2.6579487 m 35.764015 MeV 581.34231 eV 1.6521823 mm 12.736435 m World muIoni + 83 -1.9511884 m 2.9357377 m -2.6612859 m 35.761337 MeV 2.6780976 keV 1.683977 cm 12.753275 m World muIoni + 84 -1.9694707 m 2.9640714 m -2.6681613 m 35.749757 MeV 6.4530759 keV 3.4413869 cm 12.787689 m World muIoni + 85 -1.9837217 m 2.9862347 m -2.6735588 m 35.743045 MeV 5.3746065 keV 2.689681 cm 12.814585 m World muIoni + 86 -1.991339 m 2.9980918 m -2.6764323 m 35.739449 MeV 2.5451074 keV 1.4383023 cm 12.828968 m World muIoni + 87 -1.9926194 m 3.0000872 m -2.6769169 m 35.73817 MeV 1.2793854 keV 2.4198844 mm 12.831388 m World muIoni + 88 -2.0064631 m 3.0216561 m -2.6821367 m 35.730817 MeV 5.6207221 keV 2.6155496 cm 12.857544 m World muIoni + 89 -2.0087523 m 3.0252331 m -2.6830023 m 35.72901 MeV 398.40857 eV 4.3342147 mm 12.861878 m World muIoni + 90 -2.0114658 m 3.0294719 m -2.6840285 m 35.726412 MeV 793.07632 eV 5.1364991 mm 12.867014 m World muIoni + 91 -2.0151872 m 3.0352797 m -2.6854311 m 35.723599 MeV 1.4678022 keV 7.0389355 mm 12.874053 m World muIoni + 92 -2.0422817 m 3.077387 m -2.6957025 m 35.714526 MeV 9.0735845 keV 5.111402 cm 12.925167 m World muIoni + 93 -2.0768478 m 3.1309547 m -2.7086754 m 35.696272 MeV 16.002557 keV 6.5058608 cm 12.990226 m World muIoni + 94 -2.0934294 m 3.1566428 m -2.7148607 m 35.689721 MeV 5.2340095 keV 3.1194352 cm 13.02142 m World muIoni + 95 -2.1040333 m 3.1730756 m -2.7188164 m 35.68427 MeV 4.0889279 keV 1.9953201 cm 13.041374 m World muIoni + 96 -2.1173654 m 3.1937153 m -2.7238236 m 35.676509 MeV 7.76155 keV 2.507611 cm 13.06645 m World muIoni + 97 -2.1372082 m 3.2245198 m -2.7313085 m 35.662376 MeV 10.327806 keV 3.7398945 cm 13.103849 m World muIoni + 98 -2.1569135 m 3.2549499 m -2.7386976 m 35.649391 MeV 11.456491 keV 3.699856 cm 13.140847 m World muIoni + 99 -2.1913723 m 3.3080856 m -2.751772 m 35.634383 MeV 13.979759 keV 6.4666606 cm 13.205514 m World muIoni + 100 -2.1922298 m 3.3094052 m -2.7520956 m 35.62914 MeV 216.27534 eV 1.6066266 mm 13.20712 m World muIoni + 101 -2.2252261 m 3.3603378 m -2.7644805 m 35.611604 MeV 15.325504 keV 6.1937787 cm 13.269058 m World muIoni + 102 -2.249416 m 3.3977358 m -2.7734807 m 35.599962 MeV 10.559251 keV 4.5439742 cm 13.314498 m World muIoni + 103 -2.3263209 m 3.516658 m -2.8018048 m 35.567328 MeV 31.34585 keV 14.44275 cm 13.458925 m World muIoni + 104 -2.3373055 m 3.5336387 m -2.8058865 m 35.559699 MeV 5.9010876 keV 2.063172 cm 13.479557 m World muIoni + 105 -2.3720458 m 3.5876931 m -2.8186504 m 35.538758 MeV 18.018212 keV 6.5511582 cm 13.545069 m World muIoni + 106 -2.3917199 m 3.6187928 m -2.8259341 m 35.526508 MeV 11.22534 keV 3.7514271 cm 13.582583 m World muIoni + 107 -2.4010935 m 3.6336299 m -2.8294132 m 35.521117 MeV 4.1398281 keV 1.7891537 cm 13.600475 m World muIoni + 108 -2.4384323 m 3.6928757 m -2.8434283 m 35.489029 MeV 15.450791 keV 7.1419143 cm 13.671894 m World muIoni + 109 -2.4653872 m 3.7355951 m -2.8535447 m 35.473604 MeV 12.822822 keV 5.1515604 cm 13.723409 m World muIoni + 110 -2.4733407 m 3.7482533 m -2.8565016 m 35.456004 MeV 4.417207 keV 1.5239255 cm 13.738649 m World muIoni + 111 -2.4812901 m 3.7608762 m -2.8594453 m 35.45037 MeV 1.7880617 keV 1.5205135 cm 13.753854 m World muIoni + 112 -2.4915129 m 3.7771411 m -2.8632696 m 35.437776 MeV 4.4487682 keV 1.9587653 cm 13.773441 m World muIoni + 113 -2.5073437 m 3.8023623 m -2.8692125 m 35.430391 MeV 4.4117896 keV 3.0365129 cm 13.803806 m World muIoni + 114 -2.5098776 m 3.8064145 m -2.8701605 m 35.426748 MeV 855.34061 eV 4.872385 mm 13.808679 m World muIoni + 115 -2.53741 m 3.8505242 m -2.8805217 m 35.413036 MeV 12.355417 keV 5.3019384 cm 13.861698 m World muIoni + 116 -2.543547 m 3.8603635 m -2.8828385 m 35.391807 MeV 3.6430576 keV 1.1825591 cm 13.873524 m World muIoni + 117 -2.5507207 m 3.8718858 m -2.8855649 m 35.386012 MeV 3.2448366 keV 1.3844055 cm 13.887368 m World muIoni + 118 -2.5745917 m 3.910054 m -2.894637 m 35.3688 MeV 11.543092 keV 4.5923295 cm 13.933291 m World muIoni + 119 -2.6187878 m 3.9801819 m -2.9112935 m 35.341474 MeV 22.783208 keV 8.4549921 cm 14.017841 m World muIoni + 120 -2.6280964 m 3.9948908 m -2.9147741 m 35.335701 MeV 4.5792491 keV 1.7751515 cm 14.035593 m World muIoni + 121 -2.6829774 m 4.081594 m -2.9355268 m 35.303062 MeV 25.143974 keV 10.469061 cm 14.140283 m World muIoni + 122 -2.6996921 m 4.1080322 m -2.9418739 m 35.29548 MeV 6.0296411 keV 3.1916231 cm 14.172199 m World muIoni + 123 -2.7156992 m 4.1332262 m -2.9479432 m 35.285788 MeV 7.7870866 keV 3.0459859 cm 14.202659 m World muIoni + 124 -2.7178968 m 4.136676 m -2.9487795 m 35.282879 MeV 1.7781436 keV 4.174908 mm 14.206834 m World muIoni + 125 -2.724929 m 4.1477161 m -2.9514474 m 35.278096 MeV 3.0563925 keV 1.335862 cm 14.220193 m World muIoni + 126 -2.744948 m 4.1791459 m -2.959038 m 35.269196 MeV 8.8997178 keV 3.80291 cm 14.258222 m OutOfWorld Transportation Track (trackID 21, parentID 4) is processed with stopping code 2 NULL returned from G4StackManager. Terminate current event processing. diff --git a/examples/extended/field/field05/field05.out b/examples/extended/field/field05/field05.out index 2c45073aefc..399d6d5f9c9 100644 --- a/examples/extended/field/field05/field05.out +++ b/examples/extended/field/field05/field05.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -33,10 +33,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/field/field06/field06.out b/examples/extended/field/field06/field06.out index 65f2483a670..a557f95f217 100644 --- a/examples/extended/field/field06/field06.out +++ b/examples/extended/field/field06/field06.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -45,10 +45,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -2297,7 +2299,7 @@ Terminate current event processing. Run terminated. Run Summary Number of events processed : 1 - User=0.05s Real=0.05s Sys=0s + User=0.05s Real=0.09s Sys=0.02s # Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.out b/examples/extended/g3tog4/clGeometry/clGeometry.out index 95d092e9f04..ecb25cf1d7c 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.out +++ b/examples/extended/g3tog4/clGeometry/clGeometry.out @@ -5,7 +5,7 @@ Geometry data file: /ec/G4-builds/release/slc6-gcc48-RelWithDebInfo/geant4-10-00 ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -666,7 +666,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0s Sys=0s + User=0s Real=0.01s Sys=0s /gun/particle mu+ /run/beamOn 1 diff --git a/examples/extended/hadronic/Hadr00/hadr00.out b/examples/extended/hadronic/Hadr00/hadr00.out index 3ae942b73f2..36542133483 100644 --- a/examples/extended/hadronic/Hadr00/hadr00.out +++ b/examples/extended/hadronic/Hadr00/hadr00.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -607,7 +607,7 @@ EventAction: Event # 0 started Run terminated. Run Summary Number of events processed : 10 - User=0.13s Real=0.13s Sys=0s + User=0.13s Real=0.14s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ### Fill Cross Sections for proton off Al diff --git a/examples/extended/hadronic/Hadr01/hadr01.out b/examples/extended/hadronic/Hadr01/hadr01.out index 2d1cf88cbe2..62527c7a4aa 100644 --- a/examples/extended/hadronic/Hadr01/hadr01.out +++ b/examples/extended/hadronic/Hadr01/hadr01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -276,7 +276,7 @@ EventAction: Event # 90 started Run terminated. Run Summary Number of events processed : 100 - User=0.34s Real=0.34s Sys=0s + User=0.35s Real=0.35s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ======================================================== diff --git a/examples/extended/hadronic/Hadr02/hadr02.out b/examples/extended/hadronic/Hadr02/hadr02.out index 10761fdfdf1..39b0eddc7db 100644 --- a/examples/extended/hadronic/Hadr02/hadr02.out +++ b/examples/extended/hadronic/Hadr02/hadr02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -617,7 +617,7 @@ EventAction: Event # 90 started Run terminated. Run Summary Number of events processed : 100 - User=0.25s Real=0.25s Sys=0s + User=0.34s Real=0.35s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ======================================================== diff --git a/examples/extended/hadronic/Hadr03/hadr03.out b/examples/extended/hadronic/Hadr03/hadr03.out index 5a210a64ba2..3a75a88df14 100644 --- a/examples/extended/hadronic/Hadr03/hadr03.out +++ b/examples/extended/hadronic/Hadr03/hadr03.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -256,7 +256,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=1.08s Real=1.1s Sys=0s + User=1.12s Real=1.13s Sys=0.01s The run consists of 10000 proton of 10 MeV through 10 m of Molybdenum98 (density: 10.28 g/cm3 ) diff --git a/examples/extended/hadronic/Hadr05/hadr05.out b/examples/extended/hadronic/Hadr05/hadr05.out index 1df19368e45..84810fe901e 100644 --- a/examples/extended/hadronic/Hadr05/hadr05.out +++ b/examples/extended/hadronic/Hadr05/hadr05.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -261,7 +261,7 @@ EventAction: Event # 0 started Run terminated. Run Summary Number of events processed : 10 - User=0.13s Real=0.14s Sys=0s + User=0.14s Real=0.14s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ### Fill Cross Sections for proton off Al diff --git a/examples/extended/medical/DICOM/run.out b/examples/extended/medical/DICOM/run.out index 82e978162f7..61dcea2a518 100644 --- a/examples/extended/medical/DICOM/run.out +++ b/examples/extended/medical/DICOM/run.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -112,10 +112,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -870,7 +872,7 @@ EV: 99 Run terminated. Run Summary Number of events processed : 100 - User=0.06s Real=0.05s Sys=0s + User=0.04s Real=0.04s Sys=0s --------------------End of Global Run----------------------- The run was 200 events diff --git a/examples/extended/medical/GammaTherapy/GammaTherapy.out b/examples/extended/medical/GammaTherapy/GammaTherapy.out index 8963864804d..b223829ed8e 100644 --- a/examples/extended/medical/GammaTherapy/GammaTherapy.out +++ b/examples/extended/medical/GammaTherapy/GammaTherapy.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -214,7 +214,7 @@ Index : 5 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10000 - User=10.41s Real=10.58s Sys=0.01s + User=10.87s Real=10.92s Sys=0s RunAction: End of run actions are started Histo: End of run actions are started ======================================================== diff --git a/examples/extended/medical/electronScattering/electronScattering.out b/examples/extended/medical/electronScattering/electronScattering.out index 241f48158a7..31c6a448c75 100644 --- a/examples/extended/medical/electronScattering/electronScattering.out +++ b/examples/extended/medical/electronScattering/electronScattering.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -300,7 +300,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 100000 - User=18.26s Real=18.79s Sys=0s + User=20.28s Real=20.34s Sys=0.01s ======================== run summary ====================== diff --git a/examples/extended/medical/fanoCavity/fanoCavity.out b/examples/extended/medical/fanoCavity/fanoCavity.out index 03e9bb89ec7..6a21f603b37 100644 --- a/examples/extended/medical/fanoCavity/fanoCavity.out +++ b/examples/extended/medical/fanoCavity/fanoCavity.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -228,7 +228,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 4000 - User=36.72s Real=37.23s Sys=0s + User=44.69s Real=45.13s Sys=0.03s ======================== run summary ====================== diff --git a/examples/extended/medical/fanoCavity2/fanoCavity2.out b/examples/extended/medical/fanoCavity2/fanoCavity2.out index c2e0ac7ecb0..613290bc172 100644 --- a/examples/extended/medical/fanoCavity2/fanoCavity2.out +++ b/examples/extended/medical/fanoCavity2/fanoCavity2.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -88,10 +88,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -273,7 +275,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 40000 - User=10.86s Real=10.92s Sys=0s + User=12.56s Real=12.6s Sys=0.01s Process calls frequency ---> msc= 569996 eIoni= 607830 Transportation= 22938 diff --git a/examples/extended/optical/LXe/LXe.out b/examples/extended/optical/LXe/LXe.out index a3d88de42a9..5a493dfc553 100644 --- a/examples/extended/optical/LXe/LXe.out +++ b/examples/extended/optical/LXe/LXe.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -20,10 +20,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -236,7 +238,7 @@ Unacounted for photons in this event : 0 Run terminated. Run Summary Number of events processed : 1 - User=0.26s Real=0.26s Sys=0s + User=0.37s Real=0.38s Sys=0s ========= Table of registered couples ============================== @@ -284,7 +286,7 @@ Unacounted for photons in this event : 0 Run terminated. Run Summary Number of events processed : 1 - User=0.27s Real=0.26s Sys=0s + User=0.27s Real=0.27s Sys=0s Graphics systems deleted. Visualization Manager deleting... G4 kernel has come to Quit state. diff --git a/examples/extended/optical/OpNovice/OpNovice.out b/examples/extended/optical/OpNovice/OpNovice.out index 3beb5de3fc8..764db53ac39 100644 --- a/examples/extended/optical/OpNovice/OpNovice.out +++ b/examples/extended/optical/OpNovice/OpNovice.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -29,10 +29,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -357,7 +359,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.08356486505286764 Energy Deposit (MeV) : 0.01240931326330749 ----------------------------------------------------------------------- @@ -401,7 +403,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) msc ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.08356486505286764 Energy Deposit (MeV) : 0.01240931326330749 ----------------------------------------------------------------------- @@ -455,7 +457,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6785.021513124744 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -503,7 +505,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6785.021513124744 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -545,7 +547,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6850.451137379004 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -584,7 +586,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6850.451137379004 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -633,7 +635,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 3840.801421350887 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -675,7 +677,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 3840.801421350887 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -724,7 +726,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5417.113006407777 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -772,7 +774,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5417.113006407777 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -814,7 +816,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5843.788291254718 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -853,7 +855,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5843.788291254718 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -905,7 +907,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.9487485013459167 Energy Deposit (MeV) : 0.1735823355194493 ----------------------------------------------------------------------- @@ -948,7 +950,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) msc ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.9487485013459167 Energy Deposit (MeV) : 0.1735823355194493 ----------------------------------------------------------------------- @@ -1021,7 +1023,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ea50 + Address of G4Track : 0x24dcac0 Step Length (mm) : 6015.56421901359 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1069,7 +1071,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325ea50 + Address of G4Track : 0x24dcac0 Step Length (mm) : 6015.56421901359 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1111,7 +1113,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ea50 + Address of G4Track : 0x24dcac0 Step Length (mm) : 7541.48870316978 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1150,7 +1152,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325ea50 + Address of G4Track : 0x24dcac0 Step Length (mm) : 7541.48870316978 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1199,7 +1201,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e460 + Address of G4Track : 0x24dc4d0 Step Length (mm) : 6107.055878611013 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1247,7 +1249,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325e460 + Address of G4Track : 0x24dc4d0 Step Length (mm) : 6107.055878611013 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1289,7 +1291,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e460 + Address of G4Track : 0x24dc4d0 Step Length (mm) : 7962.66306510754 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1328,7 +1330,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325e460 + Address of G4Track : 0x24dc4d0 Step Length (mm) : 7962.66306510754 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1377,7 +1379,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e358 + Address of G4Track : 0x24dc3c8 Step Length (mm) : 2931.052057328176 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1419,7 +1421,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325e358 + Address of G4Track : 0x24dc3c8 Step Length (mm) : 2931.052057328176 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1468,7 +1470,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e250 + Address of G4Track : 0x24dc2c0 Step Length (mm) : 5509.879150998836 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1516,7 +1518,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325e250 + Address of G4Track : 0x24dc2c0 Step Length (mm) : 5509.879150998836 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1558,7 +1560,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e250 + Address of G4Track : 0x24dc2c0 Step Length (mm) : 6085.236079330465 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1597,7 +1599,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325e250 + Address of G4Track : 0x24dc2c0 Step Length (mm) : 6085.236079330465 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1646,7 +1648,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 5393.1710697667 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1694,7 +1696,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 5393.1710697667 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1736,7 +1738,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 5805.757943997323 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1775,7 +1777,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 5805.757943997323 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1824,7 +1826,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325df58 + Address of G4Track : 0x24dbfc8 Step Length (mm) : 5804.417122395797 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1866,7 +1868,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325df58 + Address of G4Track : 0x24dbfc8 Step Length (mm) : 5804.417122395797 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1915,7 +1917,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 6052.167001972899 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -1963,7 +1965,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 6052.167001972899 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2005,7 +2007,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 7679.618912574673 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2044,7 +2046,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 7679.618912574673 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2093,7 +2095,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d860 + Address of G4Track : 0x24db8d0 Step Length (mm) : 3353.591255645674 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2135,7 +2137,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d860 + Address of G4Track : 0x24db8d0 Step Length (mm) : 3353.591255645674 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2184,7 +2186,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 1409.345465448369 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2226,7 +2228,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 1409.345465448369 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2275,7 +2277,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 1274.401280152774 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2323,7 +2325,7 @@ Momentum Change: (-0.1077928520766766,-0.3791124650715831,-0.9190508363896545) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 1274.401280152774 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2365,7 +2367,7 @@ Momentum Change: (-0.1077928520766766,-0.3791124650715831,-0.9190508363896545) 1) Transportation ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 6787.839102802685 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2413,7 +2415,7 @@ Momentum Change: (-0.1077928520766766,-0.3791124650715831,-0.9190508363896545) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 6787.839102802685 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2455,7 +2457,7 @@ Momentum Change: (-0.1077928520766766,-0.3791124650715831,-0.9190508363896545) 1) Transportation ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5911.077779784754 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2494,7 +2496,7 @@ Momentum Change: (-0.1077928520766766,-0.3791124650715831,-0.9190508363896545) 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5911.077779784754 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2543,7 +2545,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 7004.297901206464 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2591,7 +2593,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 7004.297901206464 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2633,7 +2635,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 6831.578240273428 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2672,7 +2674,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 6831.578240273428 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2721,7 +2723,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5685.266967251451 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2769,7 +2771,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5685.266967251451 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2811,7 +2813,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 6558.443578997573 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2850,7 +2852,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 6558.443578997573 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2899,7 +2901,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 5571.24395663671 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2947,7 +2949,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 5571.24395663671 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -2989,7 +2991,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 6218.16635887006 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3028,7 +3030,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 6218.16635887006 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3077,7 +3079,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6729.755368035195 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3125,7 +3127,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6729.755368035195 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3167,7 +3169,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6452.991823496475 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3206,7 +3208,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6452.991823496475 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3255,7 +3257,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 6302.081234138165 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3303,7 +3305,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 6302.081234138165 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3345,7 +3347,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 8325.321780945338 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3384,7 +3386,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 8325.321780945338 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3433,7 +3435,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 1996.864243776687 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3475,7 +3477,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 1996.864243776687 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3524,7 +3526,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5093.365589464554 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3572,7 +3574,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5093.365589464554 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3614,7 +3616,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5176.466574708638 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3653,7 +3655,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5176.466574708638 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3702,7 +3704,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 4760.441864617523 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3744,7 +3746,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 4760.441864617523 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3793,7 +3795,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6288.142471468486 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3841,7 +3843,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6288.142471468486 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3883,7 +3885,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8835.964448396753 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3922,7 +3924,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8835.964448396753 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -3971,7 +3973,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 6694.548695457392 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4019,7 +4021,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 6694.548695457392 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4061,7 +4063,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 8538.972860106362 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4100,7 +4102,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 8538.972860106362 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4149,7 +4151,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6588.041607420599 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4197,7 +4199,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6588.041607420599 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4239,7 +4241,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6571.709332798943 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4278,7 +4280,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6571.709332798943 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4327,7 +4329,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6455.963412685483 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4375,7 +4377,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 6455.963412685483 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4417,7 +4419,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4460,7 +4462,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4502,7 +4504,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 1634.583235006205 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4550,7 +4552,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 1634.583235006205 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4592,7 +4594,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4635,7 +4637,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4677,7 +4679,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 11278.89545472008 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4725,7 +4727,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 11278.89545472008 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4767,7 +4769,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 9617.188701918865 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4806,7 +4808,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 9617.188701918865 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4855,7 +4857,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5236.654186086087 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4903,7 +4905,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5236.654186086087 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4945,7 +4947,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5461.558254077664 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -4984,7 +4986,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5461.558254077664 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5033,7 +5035,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 6694.828478917356 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5081,7 +5083,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 6694.828478917356 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5123,7 +5125,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 8411.57494049623 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5162,7 +5164,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 8411.57494049623 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5214,7 +5216,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.2904942848026569 Energy Deposit (MeV) : 0.06089288287695215 ----------------------------------------------------------------------- @@ -5257,7 +5259,7 @@ ge = 1.087529207944762e-06 2) msc ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.2904942848026569 Energy Deposit (MeV) : 0.06089288287695215 ----------------------------------------------------------------------- @@ -5309,7 +5311,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 5931.777630916027 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5357,7 +5359,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 5931.777630916027 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5399,7 +5401,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 7320.098165354617 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5438,7 +5440,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 7320.098165354617 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5487,7 +5489,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 8159.946897166722 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5529,7 +5531,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 8159.946897166722 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5578,7 +5580,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 4008.728883761631 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5620,7 +5622,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 4008.728883761631 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5674,7 +5676,7 @@ ge = 1.088250710235216e-06 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.04126660477978816 Energy Deposit (MeV) : 0.01058170385755523 ----------------------------------------------------------------------- @@ -5715,7 +5717,7 @@ ge = 7.218127836973781e-07 2) msc ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.04126660477978816 Energy Deposit (MeV) : 0.01058170385755523 ----------------------------------------------------------------------- @@ -5760,7 +5762,7 @@ ge = 7.218127836973781e-07 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.5855742932103722 Energy Deposit (MeV) : 0.2425337644827359 ----------------------------------------------------------------------- @@ -5802,7 +5804,7 @@ ge = 7.218127836973781e-07 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.5855742932103722 Energy Deposit (MeV) : 0.2425337644827359 ----------------------------------------------------------------------- @@ -5870,7 +5872,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 7131.490646624585 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5918,7 +5920,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 7131.490646624585 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5960,7 +5962,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 7714.778673391938 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -5999,7 +6001,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 7714.778673391938 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6048,7 +6050,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 6702.728990939354 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6096,7 +6098,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 6702.728990939354 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6138,7 +6140,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 6967.784854328843 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6177,7 +6179,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 6967.784854328843 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6226,7 +6228,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 1132.550191194946 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6274,7 +6276,7 @@ Momentum Change: (-0.5244053486888807,-0.174340540004406,-0.8334293049668133) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 1132.550191194946 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6316,7 +6318,7 @@ Momentum Change: (-0.5244053486888807,-0.174340540004406,-0.8334293049668133) 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 6277.934632144755 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6364,7 +6366,7 @@ Momentum Change: (-0.5244053486888807,-0.174340540004406,-0.8334293049668133) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 6277.934632144755 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6406,7 +6408,7 @@ Momentum Change: (-0.5244053486888807,-0.174340540004406,-0.8334293049668133) 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 7562.530988137612 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6445,7 +6447,7 @@ Momentum Change: (-0.5244053486888807,-0.174340540004406,-0.8334293049668133) 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 7562.530988137612 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6494,7 +6496,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6313.553562055761 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6542,7 +6544,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6313.553562055761 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6584,7 +6586,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8752.632856619801 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6623,7 +6625,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8752.632856619801 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6672,7 +6674,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 1282.222069569846 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6714,7 +6716,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 1282.222069569846 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6763,7 +6765,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 5061.935346461163 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6811,7 +6813,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 5061.935346461163 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6853,7 +6855,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 5114.234592710568 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6892,7 +6894,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 5114.234592710568 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6941,7 +6943,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 4759.686862176137 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -6983,7 +6985,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 4759.686862176137 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7032,7 +7034,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5415.392218052688 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7080,7 +7082,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5415.392218052688 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7122,7 +7124,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5841.463181962068 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7161,7 +7163,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 5841.463181962068 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7210,7 +7212,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5478.695320346515 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7258,7 +7260,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5478.695320346515 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7300,7 +7302,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5992.123885491838 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7339,7 +7341,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 5992.123885491838 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7388,7 +7390,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 231.2894294986042 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7427,7 +7429,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 231.2894294986042 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7470,7 +7472,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 9.051538300136887 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7510,7 +7512,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 9.051538300136887 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7554,7 +7556,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 55.3184547039949 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7595,7 +7597,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 55.3184547039949 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7640,7 +7642,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 81.36217325949228 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7682,7 +7684,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 81.36217325949228 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7728,7 +7730,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 128.508570356976 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7771,7 +7773,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 128.508570356976 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7818,7 +7820,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 16.11993312842984 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7862,7 +7864,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 16.11993312842984 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7910,7 +7912,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 58.86165918247038 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -7955,7 +7957,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 58.86165918247038 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8004,7 +8006,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6.304088625805215 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8050,7 +8052,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6.304088625805215 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8100,7 +8102,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 111.1176542659841 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8147,7 +8149,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 111.1176542659841 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8198,7 +8200,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 62.58575289075317 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8246,7 +8248,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 62.58575289075317 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8298,7 +8300,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 172.1510678670995 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8347,7 +8349,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 172.1510678670995 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8400,7 +8402,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 65.36854792831865 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8450,7 +8452,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 65.36854792831865 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8504,7 +8506,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 58.51136518677262 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8555,7 +8557,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) phot (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 58.51136518677262 Energy Deposit (MeV) : 0.0005431 ----------------------------------------------------------------------- @@ -8617,7 +8619,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 48.04059456745014 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8656,7 +8658,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 48.04059456745014 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8699,7 +8701,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 74.76024677644794 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8739,7 +8741,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 74.76024677644794 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8783,7 +8785,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 38.24692032656323 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8824,7 +8826,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 38.24692032656323 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8869,7 +8871,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 44.15239430119613 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8911,7 +8913,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 44.15239430119613 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -8957,7 +8959,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 10.05266636563671 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -9000,7 +9002,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 10.05266636563671 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -9047,7 +9049,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 4.533847697767785 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -9091,7 +9093,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) compt (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 4.533847697767785 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -9139,7 +9141,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 110.4755073420556 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -9184,7 +9186,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) phot (Forced) ++G4Step Information - Address of G4Track : 0x325cb58 + Address of G4Track : 0x24dabc8 Step Length (mm) : 110.4755073420556 Energy Deposit (MeV) : 0.0005431 ----------------------------------------------------------------------- @@ -9243,7 +9245,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 0.09721256944675574 Energy Deposit (MeV) : 0.08029918571888475 ----------------------------------------------------------------------- @@ -9285,7 +9287,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325e060 + Address of G4Track : 0x24dc0d0 Step Length (mm) : 0.09721256944675574 Energy Deposit (MeV) : 0.08029918571888475 ----------------------------------------------------------------------- @@ -9347,7 +9349,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325df58 + Address of G4Track : 0x24dbfc8 Step Length (mm) : 0.01955636802682396 Energy Deposit (MeV) : 0.03212387919666759 ----------------------------------------------------------------------- @@ -9389,7 +9391,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325df58 + Address of G4Track : 0x24dbfc8 Step Length (mm) : 0.01955636802682396 Energy Deposit (MeV) : 0.03212387919666759 ----------------------------------------------------------------------- @@ -9449,7 +9451,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 0.09587339618386012 Energy Deposit (MeV) : 0.07965462739992853 ----------------------------------------------------------------------- @@ -9491,7 +9493,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325de50 + Address of G4Track : 0x24dbec0 Step Length (mm) : 0.09587339618386012 Energy Deposit (MeV) : 0.07965462739992853 ----------------------------------------------------------------------- @@ -9554,7 +9556,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d860 + Address of G4Track : 0x24db8d0 Step Length (mm) : 0.005743244924818385 Energy Deposit (MeV) : 0.01608464157962358 ----------------------------------------------------------------------- @@ -9594,7 +9596,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325d860 + Address of G4Track : 0x24db8d0 Step Length (mm) : 0.005743244924818385 Energy Deposit (MeV) : 0.01608464157962358 ----------------------------------------------------------------------- @@ -9652,7 +9654,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 0.3677062234646198 Energy Deposit (MeV) : 0.1777503529364054 ----------------------------------------------------------------------- @@ -9694,7 +9696,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 0.3677062234646198 Energy Deposit (MeV) : 0.1777503529364054 ----------------------------------------------------------------------- @@ -9759,7 +9761,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 1.948843678171696e-06 Energy Deposit (MeV) : 1.523625055149802e-05 ----------------------------------------------------------------------- @@ -9798,7 +9800,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) msc ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 1.948843678171696e-06 Energy Deposit (MeV) : 1.523625055149802e-05 ----------------------------------------------------------------------- @@ -9856,7 +9858,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 0.2047667006030972 Energy Deposit (MeV) : 0.1245278869179386 ----------------------------------------------------------------------- @@ -9898,7 +9900,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 0.2047667006030972 Energy Deposit (MeV) : 0.1245278869179386 ----------------------------------------------------------------------- @@ -9960,7 +9962,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 0.05299977931544212 Energy Deposit (MeV) : 0.05660520585661665 ----------------------------------------------------------------------- @@ -10002,7 +10004,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 0.05299977931544212 Energy Deposit (MeV) : 0.05660520585661665 ----------------------------------------------------------------------- @@ -10064,7 +10066,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 0.002582160644616948 Energy Deposit (MeV) : 0.01022349698885361 ----------------------------------------------------------------------- @@ -10104,7 +10106,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 0.002582160644616948 Energy Deposit (MeV) : 0.01022349698885361 ----------------------------------------------------------------------- @@ -10162,7 +10164,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 0.009814110210224068 Energy Deposit (MeV) : 0.02176625085922824 ----------------------------------------------------------------------- @@ -10204,7 +10206,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 0.009814110210224068 Energy Deposit (MeV) : 0.02176625085922824 ----------------------------------------------------------------------- @@ -10263,7 +10265,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.0005410463813344371 Energy Deposit (MeV) : 0.004148528953957467 ----------------------------------------------------------------------- @@ -10303,7 +10305,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 0.0005410463813344371 Energy Deposit (MeV) : 0.004148528953957467 ----------------------------------------------------------------------- @@ -10361,7 +10363,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 0.004809940433314044 Energy Deposit (MeV) : 0.01454991121159513 ----------------------------------------------------------------------- @@ -10401,7 +10403,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 0.004809940433314044 Energy Deposit (MeV) : 0.01454991121159513 ----------------------------------------------------------------------- @@ -10459,7 +10461,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 0.0002415089233461231 Energy Deposit (MeV) : 0.00256407321255471 ----------------------------------------------------------------------- @@ -10498,7 +10500,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) msc ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 0.0002415089233461231 Energy Deposit (MeV) : 0.00256407321255471 ----------------------------------------------------------------------- @@ -10556,7 +10558,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 0.002183688459115702 Energy Deposit (MeV) : 0.009292326425189054 ----------------------------------------------------------------------- @@ -10596,7 +10598,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 0.002183688459115702 Energy Deposit (MeV) : 0.009292326425189054 ----------------------------------------------------------------------- @@ -10654,7 +10656,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 0.02038116626894694 Energy Deposit (MeV) : 0.03288296384479408 ----------------------------------------------------------------------- @@ -10696,7 +10698,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 0.02038116626894694 Energy Deposit (MeV) : 0.03288296384479408 ----------------------------------------------------------------------- @@ -10755,7 +10757,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 0.2212751767530592 Energy Deposit (MeV) : 0.1304512133984282 ----------------------------------------------------------------------- @@ -10797,7 +10799,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 0.2212751767530592 Energy Deposit (MeV) : 0.1304512133984282 ----------------------------------------------------------------------- @@ -10861,7 +10863,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0.03497916612285013 Energy Deposit (MeV) : 0.04466147620233568 ----------------------------------------------------------------------- @@ -10903,7 +10905,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0.03497916612285013 Energy Deposit (MeV) : 0.04466147620233568 ----------------------------------------------------------------------- @@ -10963,7 +10965,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0.02696947127695794 Energy Deposit (MeV) : 0.03853256306567965 ----------------------------------------------------------------------- @@ -11005,7 +11007,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 0.02696947127695794 Energy Deposit (MeV) : 0.03853256306567965 ----------------------------------------------------------------------- @@ -11064,7 +11066,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0.1639876131919953 Energy Deposit (MeV) : 0.1091093937626292 ----------------------------------------------------------------------- @@ -11106,7 +11108,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0.1639876131919953 Energy Deposit (MeV) : 0.1091093937626292 ----------------------------------------------------------------------- @@ -11167,7 +11169,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 4) eBrem ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 0.02353152441630393 Energy Deposit (MeV) : 0.03566840621813822 ----------------------------------------------------------------------- @@ -11209,7 +11211,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) eBrem (Forced) ++G4Step Information - Address of G4Track : 0x32587f8 + Address of G4Track : 0x24d6868 Step Length (mm) : 0.02353152441630393 Energy Deposit (MeV) : 0.03566840621813822 ----------------------------------------------------------------------- @@ -11267,7 +11269,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3261208 + Address of G4Track : 0x24df278 Step Length (mm) : 5493.214659406972 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11315,7 +11317,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3261208 + Address of G4Track : 0x24df278 Step Length (mm) : 5493.214659406972 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11357,7 +11359,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3261208 + Address of G4Track : 0x24df278 Step Length (mm) : 5875.565712623409 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11396,7 +11398,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3261208 + Address of G4Track : 0x24df278 Step Length (mm) : 5875.565712623409 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11445,7 +11447,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3261100 + Address of G4Track : 0x24df170 Step Length (mm) : 5316.284375365855 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11493,7 +11495,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3261100 + Address of G4Track : 0x24df170 Step Length (mm) : 5316.284375365855 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11535,7 +11537,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3261100 + Address of G4Track : 0x24df170 Step Length (mm) : 5173.150095680799 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11574,7 +11576,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3261100 + Address of G4Track : 0x24df170 Step Length (mm) : 5173.150095680799 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11623,7 +11625,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 7112.745839988201 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11671,7 +11673,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 7112.745839988201 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11713,7 +11715,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11756,7 +11758,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11798,7 +11800,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1160.83946959314 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11846,7 +11848,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1160.83946959314 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11888,7 +11890,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11931,7 +11933,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -11973,7 +11975,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1545.527101849782 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12021,7 +12023,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1545.527101849782 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12063,7 +12065,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12106,7 +12108,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12148,7 +12150,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1545.527101849782 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12196,7 +12198,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 1545.527101849782 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12238,7 +12240,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 7893.129600444765 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12277,7 +12279,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3258900 + Address of G4Track : 0x24d6970 Step Length (mm) : 7893.129600444765 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12326,7 +12328,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260b10 + Address of G4Track : 0x24deb80 Step Length (mm) : 6786.795902506476 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12374,7 +12376,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260b10 + Address of G4Track : 0x24deb80 Step Length (mm) : 6786.795902506476 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12416,7 +12418,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260b10 + Address of G4Track : 0x24deb80 Step Length (mm) : 5616.157458329071 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12455,7 +12457,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260b10 + Address of G4Track : 0x24deb80 Step Length (mm) : 5616.157458329071 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12504,7 +12506,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 8207.28481498841 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12552,7 +12554,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 8207.28481498841 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12594,7 +12596,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12637,7 +12639,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12679,7 +12681,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 184.1255079405555 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12727,7 +12729,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 184.1255079405555 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12769,7 +12771,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 9589.26253721477 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12808,7 +12810,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260a08 + Address of G4Track : 0x24dea78 Step Length (mm) : 9589.26253721477 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12857,7 +12859,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 3737.995719274136 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12905,7 +12907,7 @@ Momentum Change: (0.7646219989621198,0.03333883926348988,-0.6436161282159852) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 3737.995719274136 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12947,7 +12949,7 @@ Momentum Change: (0.7646219989621198,0.03333883926348988,-0.6436161282159852) 1) Transportation ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 1199.995276723619 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -12989,7 +12991,7 @@ Momentum Change: (0.7646219989621198,0.03333883926348988,-0.6436161282159852) 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b330 + Address of G4Track : 0x24d93a0 Step Length (mm) : 1199.995276723619 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13038,7 +13040,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6610.26039943055 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13086,7 +13088,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 6610.26039943055 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13128,7 +13130,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13171,7 +13173,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13213,7 +13215,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 588.6754697969606 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13261,7 +13263,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 588.6754697969606 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13303,7 +13305,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13346,7 +13348,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 0 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13388,7 +13390,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 2490.770626332924 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13430,7 +13432,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b438 + Address of G4Track : 0x24d94a8 Step Length (mm) : 2490.770626332924 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13479,7 +13481,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260900 + Address of G4Track : 0x24de970 Step Length (mm) : 5654.825112024713 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13527,7 +13529,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260900 + Address of G4Track : 0x24de970 Step Length (mm) : 5654.825112024713 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13569,7 +13571,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260900 + Address of G4Track : 0x24de970 Step Length (mm) : 6376.026949482545 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13608,7 +13610,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260900 + Address of G4Track : 0x24de970 Step Length (mm) : 6376.026949482545 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13657,7 +13659,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 5676.401207267646 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13705,7 +13707,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 5676.401207267646 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13747,7 +13749,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 6625.048691215722 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13786,7 +13788,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325b540 + Address of G4Track : 0x24d95b0 Step Length (mm) : 6625.048691215722 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13835,7 +13837,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 5883.684289790231 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13883,7 +13885,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 5883.684289790231 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13925,7 +13927,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 8601.855277960985 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -13964,7 +13966,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d460 + Address of G4Track : 0x24db4d0 Step Length (mm) : 8601.855277960985 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14013,7 +14015,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 1147.443534167204 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14055,7 +14057,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d250 + Address of G4Track : 0x24db2c0 Step Length (mm) : 1147.443534167204 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14104,7 +14106,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 5087.071069385343 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14152,7 +14154,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 5087.071069385343 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14194,7 +14196,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 5018.470450817905 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14233,7 +14235,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x32586f0 + Address of G4Track : 0x24d6760 Step Length (mm) : 5018.470450817905 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14282,7 +14284,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 2004.456106921676 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14324,7 +14326,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325ca50 + Address of G4Track : 0x24daac0 Step Length (mm) : 2004.456106921676 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14373,7 +14375,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 4971.928200158783 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14421,7 +14423,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 4971.928200158783 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14463,7 +14465,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5011.745105420285 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14502,7 +14504,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c860 + Address of G4Track : 0x24da8d0 Step Length (mm) : 5011.745105420285 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14551,7 +14553,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6090.523279302451 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14599,7 +14601,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 6090.523279302451 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14641,7 +14643,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8046.53104946685 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14680,7 +14682,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c650 + Address of G4Track : 0x24da6c0 Step Length (mm) : 8046.53104946685 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14729,7 +14731,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 5243.437708295167 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14777,7 +14779,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 5243.437708295167 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14819,7 +14821,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 5656.572352338562 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14858,7 +14860,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325c758 + Address of G4Track : 0x24da7c8 Step Length (mm) : 5656.572352338562 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14907,7 +14909,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5550.659924072936 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14955,7 +14957,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5550.659924072936 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -14997,7 +14999,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5888.143985184203 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15036,7 +15038,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d358 + Address of G4Track : 0x24db3c8 Step Length (mm) : 5888.143985184203 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15085,7 +15087,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260710 + Address of G4Track : 0x24de780 Step Length (mm) : 7358.781051791441 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15133,7 +15135,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260710 + Address of G4Track : 0x24de780 Step Length (mm) : 7358.781051791441 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15175,7 +15177,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260710 + Address of G4Track : 0x24de780 Step Length (mm) : 5937.989706043421 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15214,7 +15216,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260710 + Address of G4Track : 0x24de780 Step Length (mm) : 5937.989706043421 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15263,7 +15265,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260608 + Address of G4Track : 0x24de678 Step Length (mm) : 4739.008073120654 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15311,7 +15313,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260608 + Address of G4Track : 0x24de678 Step Length (mm) : 4739.008073120654 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15353,7 +15355,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260608 + Address of G4Track : 0x24de678 Step Length (mm) : 5790.568927528608 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15392,7 +15394,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260608 + Address of G4Track : 0x24de678 Step Length (mm) : 5790.568927528608 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15441,7 +15443,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260500 + Address of G4Track : 0x24de570 Step Length (mm) : 4987.999744104517 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15489,7 +15491,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x3260500 + Address of G4Track : 0x24de570 Step Length (mm) : 4987.999744104517 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15531,7 +15533,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x3260500 + Address of G4Track : 0x24de570 Step Length (mm) : 5155.144612169422 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15570,7 +15572,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x3260500 + Address of G4Track : 0x24de570 Step Length (mm) : 5155.144612169422 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15619,7 +15621,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6053.35957193467 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15667,7 +15669,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 6053.35957193467 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15709,7 +15711,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 5825.519096034705 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15748,7 +15750,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325cc60 + Address of G4Track : 0x24dacd0 Step Length (mm) : 5825.519096034705 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15797,7 +15799,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ff10 + Address of G4Track : 0x24ddf80 Step Length (mm) : 6255.429331770762 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15845,7 +15847,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325ff10 + Address of G4Track : 0x24ddf80 Step Length (mm) : 6255.429331770762 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15887,7 +15889,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325ff10 + Address of G4Track : 0x24ddf80 Step Length (mm) : 8173.757782633354 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15926,7 +15928,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325ff10 + Address of G4Track : 0x24ddf80 Step Length (mm) : 8173.757782633354 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -15975,7 +15977,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fe08 + Address of G4Track : 0x24dde78 Step Length (mm) : 6325.406562586088 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16023,7 +16025,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325fe08 + Address of G4Track : 0x24dde78 Step Length (mm) : 6325.406562586088 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16065,7 +16067,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fe08 + Address of G4Track : 0x24dde78 Step Length (mm) : 9030.243265569326 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16104,7 +16106,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325fe08 + Address of G4Track : 0x24dde78 Step Length (mm) : 9030.243265569326 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16153,7 +16155,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 1314.559877775745 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16195,7 +16197,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d758 + Address of G4Track : 0x24db7c8 Step Length (mm) : 1314.559877775745 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16244,7 +16246,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5337.74105145491 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16292,7 +16294,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5337.74105145491 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16334,7 +16336,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5715.1754026582 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16373,7 +16375,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325d650 + Address of G4Track : 0x24db6c0 Step Length (mm) : 5715.1754026582 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16422,7 +16424,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fd00 + Address of G4Track : 0x24ddd70 Step Length (mm) : 705.395816735743 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16464,7 +16466,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325fd00 + Address of G4Track : 0x24ddd70 Step Length (mm) : 705.395816735743 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16513,7 +16515,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fb10 + Address of G4Track : 0x24ddb80 Step Length (mm) : 5607.167480145232 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16561,7 +16563,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325fb10 + Address of G4Track : 0x24ddb80 Step Length (mm) : 5607.167480145232 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16603,7 +16605,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fb10 + Address of G4Track : 0x24ddb80 Step Length (mm) : 6179.272155248279 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16642,7 +16644,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325fb10 + Address of G4Track : 0x24ddb80 Step Length (mm) : 6179.272155248279 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16691,7 +16693,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fa08 + Address of G4Track : 0x24dda78 Step Length (mm) : 6800.181567243711 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16739,7 +16741,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325fa08 + Address of G4Track : 0x24dda78 Step Length (mm) : 6800.181567243711 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16781,7 +16783,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325fa08 + Address of G4Track : 0x24dda78 Step Length (mm) : 5546.286597229251 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16820,7 +16822,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325fa08 + Address of G4Track : 0x24dda78 Step Length (mm) : 5546.286597229251 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16869,7 +16871,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325f900 + Address of G4Track : 0x24dd970 Step Length (mm) : 5779.496548715239 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16917,7 +16919,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 3) OpBoundary ++G4Step Information - Address of G4Track : 0x325f900 + Address of G4Track : 0x24dd970 Step Length (mm) : 5779.496548715239 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16959,7 +16961,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 1) Transportation ++G4Step Information - Address of G4Track : 0x325f900 + Address of G4Track : 0x24dd970 Step Length (mm) : 6786.59062957819 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -16998,7 +17000,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2) OpBoundary ++G4Step Information - Address of G4Track : 0x325f900 + Address of G4Track : 0x24dd970 Step Length (mm) : 6786.59062957819 Energy Deposit (MeV) : 0 ----------------------------------------------------------------------- @@ -17025,9 +17027,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Polarization - y : 0.214755384525005 0.214755384525005 Polarization - Z : -0.5819449194798126 -0.5819449194798126 Weight : 1 1 - Step Status : Geom Limit - Process defined Step: Transportation Transportation - -------------------------------------------------- + Step Status : Geom Limi ============================================================================================ ================= lines above cut to keep file within limits =============================== ============================================================================================ @@ -17049,7 +17049,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu 2 -6.85e+03 -5.01e+03 1e+04 3.53e-06 0 6.63e+03 1.35e+04 OutOfWorld Transportation Number of Scintillation photons produced in this event : 64 Number of Cerenkov photons produced in this event : 18 -number of event = 1 User=0.1s Real=0.36s Sys=0.09s +number of event = 1 User=0.12s Real=0.32s Sys=0.06s # #/process/inactivate Scintillation #/OpNovice/phys/verbose 0 diff --git a/examples/extended/optical/wls/wls.out b/examples/extended/optical/wls/wls.out index cd7a56166f3..139023438e9 100644 --- a/examples/extended/optical/wls/wls.out +++ b/examples/extended/optical/wls/wls.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -30,10 +30,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/parameterisations/Par01/examplePar01.out b/examples/extended/parameterisations/Par01/examplePar01.out index 92405484fdb..a654fd570f7 100644 --- a/examples/extended/parameterisations/Par01/examplePar01.out +++ b/examples/extended/parameterisations/Par01/examplePar01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -32,10 +32,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/parameterisations/gflash/test.out b/examples/extended/parameterisations/gflash/test.out index a9c096109ac..71f66177bf2 100644 --- a/examples/extended/parameterisations/gflash/test.out +++ b/examples/extended/parameterisations/gflash/test.out @@ -9,7 +9,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -33,10 +33,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -359,7 +361,7 @@ WARNING: Scene "none" not found. ****************************************** -Internal Real Elapsed Time is: 0.02 +Internal Real Elapsed Time is: 0.03 Internal System Elapsed Time: 0 Internal GetUserElapsed Time: 0.02 ****************************************** @@ -429,9 +431,9 @@ Internal GetUserElapsed Time: 0.02 ****************************************** -Internal Real Elapsed Time is: 0.02 +Internal Real Elapsed Time is: 0.01 Internal System Elapsed Time: 0 -Internal GetUserElapsed Time: 0.02 +Internal GetUserElapsed Time: 0.01 ****************************************** ------ ExGflashEventAction::End of event nr. 5 ----- 11947 hits are stored in ExGflashHitsCollection @@ -443,9 +445,9 @@ Internal GetUserElapsed Time: 0.02 ****************************************** -Internal Real Elapsed Time is: 0.02 +Internal Real Elapsed Time is: 0.01 Internal System Elapsed Time: 0 -Internal GetUserElapsed Time: 0.02 +Internal GetUserElapsed Time: 0.01 ****************************************** ------ ExGflashEventAction::End of event nr. 6 ----- 11927 hits are stored in ExGflashHitsCollection @@ -459,7 +461,7 @@ Internal GetUserElapsed Time: 0.02 ****************************************** Internal Real Elapsed Time is: 0.02 Internal System Elapsed Time: 0 -Internal GetUserElapsed Time: 0.01 +Internal GetUserElapsed Time: 0.02 ****************************************** ------ ExGflashEventAction::End of event nr. 7 ----- 11900 hits are stored in ExGflashHitsCollection @@ -487,7 +489,7 @@ Internal GetUserElapsed Time: 0.02 ****************************************** Internal Real Elapsed Time is: 0.02 Internal System Elapsed Time: 0 -Internal GetUserElapsed Time: 0.02 +Internal GetUserElapsed Time: 0.01 ****************************************** ------ ExGflashEventAction::End of event nr. 9 ----- 11910 hits are stored in ExGflashHitsCollection @@ -498,10 +500,10 @@ ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. number of event = 10 Graphics systems deleted. Visualization Manager deleting... -Internal Real Elapsed Time /event is: 0.0222222 +Internal Real Elapsed Time /event is: 0.0211111 ****************************************** -Total Real Elapsed Time is: 1.13 +Total Real Elapsed Time is: 1.11 Total System Elapsed Time: 0.01 -Total GetUserElapsed Time: 1.12 +Total GetUserElapsed Time: 1.09 ****************************************** diff --git a/examples/extended/persistency/P03/batch.out b/examples/extended/persistency/P03/batch.out index db947f14e50..947ec23e1a3 100644 --- a/examples/extended/persistency/P03/batch.out +++ b/examples/extended/persistency/P03/batch.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -20,10 +20,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/persistency/gdml/G01/g01.out b/examples/extended/persistency/gdml/G01/g01.out index 1ec5c4f23f0..1b6ffe415d1 100644 --- a/examples/extended/persistency/gdml/G01/g01.out +++ b/examples/extended/persistency/gdml/G01/g01.out @@ -15,7 +15,7 @@ Stripping off GDML names of materials, solids and volumes ... ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -67,17 +67,17 @@ Start closing geometry. G4GeometryManager::ReportVoxelStats -- Voxel Statistics Total memory consumed for geometry optimisation: 3 kByte - Total CPU time elapsed for geometry optimisation: 0.01 seconds + Total CPU time elapsed for geometry optimisation: 0 seconds Voxelisation: top CPU users: Percent Total CPU System CPU Memory Volume ------- ---------- ---------- -------- ---------- - 100.00 0.01 0.00 4k World + 0.00 0.00 0.00 4k World Voxelisation: top memory users: Percent Memory Heads Nodes Pointers Total CPU Volume ------- -------- ------ ------ -------- ---------- ---------- - 100.00 3k 11 41 126 0.01 World + 100.00 3k 11 41 126 0.00 World ### Run 0 starts. ********************************************************************************************************* @@ -410,7 +410,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 20 - User=0.01s Real=0.02s Sys=0s + User=0.01s Real=0.02s Sys=0.01s /gun/direction 0 0 -1 /run/beamOn 20 @@ -777,7 +777,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 20 - User=0.01s Real=0.01s Sys=0.01s + User=0.01s Real=0.02s Sys=0s /tracking/verbose 0 /gun/direction 0.3 0.2 1 /run/beamOn 20 @@ -817,7 +817,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 20 - User=0s Real=0.01s Sys=0s + User=0.01s Real=0s Sys=0s /gun/direction 0.3 -0.2 1 /run/beamOn 20 @@ -856,7 +856,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 20 - User=0.01s Real=0s Sys=0s + User=0s Real=0.01s Sys=0s /gun/direction -0.3 0.2 0.6 /run/beamOn 20 @@ -895,7 +895,7 @@ Index : 1 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 20 - User=0s Real=0.01s Sys=0s + User=0.01s Real=0.01s Sys=0s G4 kernel has come to Quit state. UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/persistency/gdml/G04/g04.out b/examples/extended/persistency/gdml/G04/g04.out index 3101c3dfb9a..927aca2021e 100644 --- a/examples/extended/persistency/gdml/G04/g04.out +++ b/examples/extended/persistency/gdml/G04/g04.out @@ -15,7 +15,7 @@ Stripping off GDML names of materials, solids and volumes ... ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -42,10 +42,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -333,7 +335,7 @@ Processing hits .... Run terminated. Run Summary Number of events processed : 20 - User=0s Real=0.01s Sys=0s + User=0s Real=0.02s Sys=0.01s /gun/direction 0 0 -1 /run/beamOn 20 @@ -585,7 +587,7 @@ Processing hits .... Run terminated. Run Summary Number of events processed : 20 - User=0.01s Real=0s Sys=0s + User=0s Real=0s Sys=0s /tracking/verbose 0 /gun/direction 0.3 0.2 1 /run/beamOn 20 @@ -638,7 +640,7 @@ Processing hits .... Run terminated. Run Summary Number of events processed : 20 - User=0s Real=0.01s Sys=0s + User=0s Real=0s Sys=0s /gun/direction 0.3 -0.2 1 /run/beamOn 20 diff --git a/examples/extended/polarisation/Pol01/pol01.out b/examples/extended/polarisation/Pol01/pol01.out index 5ffc3f7b3aa..1ed6b61ae96 100644 --- a/examples/extended/polarisation/Pol01/pol01.out +++ b/examples/extended/polarisation/Pol01/pol01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -146,7 +146,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Run terminated. Run Summary Number of events processed : 10000 - User=0.28s Real=0.28s Sys=0s + User=0.34s Real=0.34s Sys=0s The run consists of 10000 gamma of 10 MeV through 1.75 mm of G4_Fe (density: 7.874 g/cm3 ) diff --git a/examples/extended/radioactivedecay/rdecay01/rdecay01.out b/examples/extended/radioactivedecay/rdecay01/rdecay01.out index c22c12ce95b..5289d488068 100644 --- a/examples/extended/radioactivedecay/rdecay01/rdecay01.out +++ b/examples/extended/radioactivedecay/rdecay01/rdecay01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -20,10 +20,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -27173,10 +27175,7 @@ Ion has negative lifetime -1001 but is not stable. Setting mean free path to DB -------- WWWW -------- G4Exception-END --------- WWWW ------- --------- WWWW ------- G4Exception-START -------- WWWW ------- -*** G4Exception : HAD_RDM_011 - issued by : G4RadioactiveDecay::GetMeanFreePath() -Ion has +-------- WWWW ------- G4Ex ============================================================================================ ================= lines above cut to keep file within limits =============================== ============================================================================================ diff --git a/examples/extended/radioactivedecay/rdecay02/rdecay02.out b/examples/extended/radioactivedecay/rdecay02/rdecay02.out index 6fb84a9666a..17f0e50a7c8 100644 --- a/examples/extended/radioactivedecay/rdecay02/rdecay02.out +++ b/examples/extended/radioactivedecay/rdecay02/rdecay02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -55,10 +55,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) diff --git a/examples/extended/runAndEvent/RE01/sample.out b/examples/extended/runAndEvent/RE01/sample.out index ab6116a35e5..ad90614eab4 100644 --- a/examples/extended/runAndEvent/RE01/sample.out +++ b/examples/extended/runAndEvent/RE01/sample.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -20,10 +20,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -22335,10 +22337,7 @@ Point[0] Position= (-6.55328,-23.9829,2019.19) Point[1] Position= (-6.71256,-23.9411,2019.2) TrackID =2123 : ParentID=1845 : TrackStatus=1 -Particle name : e- PDG code : 11 Charge : -1 -Original momentum : -29.7482 -32.3252 1.40682 keV -Vertex : -0.00616745 -0.0225727 1.90034 m Global time : 6.33936 ns - Cur +Particle name : e- PDG code : 11 Charge : ============================================================================================ ================= lines above cut to keep file within limits =============================== ============================================================================================ diff --git a/examples/extended/runAndEvent/RE02/run.out b/examples/extended/runAndEvent/RE02/run.out index 413c9611154..6a00deb16d4 100644 --- a/examples/extended/runAndEvent/RE02/run.out +++ b/examples/extended/runAndEvent/RE02/run.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -32,10 +32,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -1058,7 +1060,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 10 - User=0.01s Real=0s Sys=0s + User=0s Real=0s Sys=0s PrimitiveScorer RUN PhantomSD,totalEDep Number of entries 11 copy no.: 970200 Run Value : 0.356 diff --git a/examples/extended/runAndEvent/RE05/exampleRE05.out b/examples/extended/runAndEvent/RE05/exampleRE05.out index 7a2085e07d6..43b5f584ac2 100644 --- a/examples/extended/runAndEvent/RE05/exampleRE05.out +++ b/examples/extended/runAndEvent/RE05/exampleRE05.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -24,10 +24,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -672,9 +674,9 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics ### Run 0 start. G4HEPEvtInterface - reading 484 HEPEvt particles from pythia_event.data. >>> Event 0 - 71 hits are stored in RE05TrackerHitsCollection. - 44 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.63659901685 (GeV) + 102 hits are stored in RE05TrackerHitsCollection. + 45 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.1276472740416 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 755 HEPEvt particles from pythia_event.data. >>> Event 1 @@ -692,19 +694,19 @@ G4HEPEvtInterface - reading 448 HEPEvt particles from pythia_event.data. >>> Event 3 0 hits are stored in RE05TrackerHitsCollection. 3 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.52407867625307 (GeV) + Total energy deposition in calorimeter : 0.5250535418862 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 945 HEPEvt particles from pythia_event.data. >>> Event 4 - 113 hits are stored in RE05TrackerHitsCollection. - 64 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 9.8312943871359 (GeV) + 114 hits are stored in RE05TrackerHitsCollection. + 73 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 11.775097634242 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 837 HEPEvt particles from pythia_event.data. >>> Event 5 - 74 hits are stored in RE05TrackerHitsCollection. - 61 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 11.143231697754 (GeV) + 103 hits are stored in RE05TrackerHitsCollection. + 134 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.6964786866717 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 603 HEPEvt particles from pythia_event.data. >>> Event 6 @@ -714,33 +716,33 @@ G4HEPEvtInterface - reading 603 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 627 HEPEvt particles from pythia_event.data. >>> Event 7 - 32 hits are stored in RE05TrackerHitsCollection. + 39 hits are stored in RE05TrackerHitsCollection. 26 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.1975650086605 (GeV) + Total energy deposition in calorimeter : 6.7138050361161 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 682 HEPEvt particles from pythia_event.data. >>> Event 8 - 41 hits are stored in RE05TrackerHitsCollection. - 52 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 10.169219579934 (GeV) + 121 hits are stored in RE05TrackerHitsCollection. + 51 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 10.197868918263 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 330 HEPEvt particles from pythia_event.data. >>> Event 9 - 12 hits are stored in RE05TrackerHitsCollection. - 19 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.9610649922452 (GeV) + 9 hits are stored in RE05TrackerHitsCollection. + 25 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 10.865376627861 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1060 HEPEvt particles from pythia_event.data. >>> Event 10 - 95 hits are stored in RE05TrackerHitsCollection. - 56 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.5106897826096 (GeV) + 110 hits are stored in RE05TrackerHitsCollection. + 73 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 10.663975537442 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1010 HEPEvt particles from pythia_event.data. >>> Event 11 0 hits are stored in RE05TrackerHitsCollection. 17 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 2.8631391341132 (GeV) + Total energy deposition in calorimeter : 2.8687867436951 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 517 HEPEvt particles from pythia_event.data. >>> Event 12 @@ -750,15 +752,15 @@ G4HEPEvtInterface - reading 517 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 815 HEPEvt particles from pythia_event.data. >>> Event 13 - 72 hits are stored in RE05TrackerHitsCollection. - 52 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.7704321971008 (GeV) + 92 hits are stored in RE05TrackerHitsCollection. + 53 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.479562712264 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 702 HEPEvt particles from pythia_event.data. >>> Event 14 - 119 hits are stored in RE05TrackerHitsCollection. - 48 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.2926321885949 (GeV) + 88 hits are stored in RE05TrackerHitsCollection. + 45 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.7913197700401 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 568 HEPEvt particles from pythia_event.data. >>> Event 15 @@ -768,15 +770,15 @@ G4HEPEvtInterface - reading 568 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 405 HEPEvt particles from pythia_event.data. >>> Event 16 - 42 hits are stored in RE05TrackerHitsCollection. - 31 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.0291557475106 (GeV) + 55 hits are stored in RE05TrackerHitsCollection. + 30 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 3.9863478995625 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 533 HEPEvt particles from pythia_event.data. >>> Event 17 0 hits are stored in RE05TrackerHitsCollection. 5 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.95305358659106 (GeV) + Total energy deposition in calorimeter : 0.95669392140501 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 342 HEPEvt particles from pythia_event.data. >>> Event 18 @@ -786,15 +788,15 @@ G4HEPEvtInterface - reading 342 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 621 HEPEvt particles from pythia_event.data. >>> Event 19 - 36 hits are stored in RE05TrackerHitsCollection. - 35 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 9.6083167772085 (GeV) + 66 hits are stored in RE05TrackerHitsCollection. + 39 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 10.833324890899 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 906 HEPEvt particles from pythia_event.data. >>> Event 20 - 75 hits are stored in RE05TrackerHitsCollection. - 60 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.6805089743622 (GeV) + 65 hits are stored in RE05TrackerHitsCollection. + 52 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.6644879643691 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 427 HEPEvt particles from pythia_event.data. >>> Event 21 @@ -804,9 +806,9 @@ G4HEPEvtInterface - reading 427 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 387 HEPEvt particles from pythia_event.data. >>> Event 22 - 46 hits are stored in RE05TrackerHitsCollection. - 27 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.415049694419 (GeV) + 76 hits are stored in RE05TrackerHitsCollection. + 44 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 3.9595281581651 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 359 HEPEvt particles from pythia_event.data. >>> Event 23 @@ -824,7 +826,7 @@ G4HEPEvtInterface - reading 786 HEPEvt particles from pythia_event.data. >>> Event 25 0 hits are stored in RE05TrackerHitsCollection. 7 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.2214980985862 (GeV) + Total energy deposition in calorimeter : 1.2129592598953 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 661 HEPEvt particles from pythia_event.data. >>> Event 26 @@ -835,14 +837,14 @@ G4HEPEvtInterface - reading 661 HEPEvt particles from pythia_event.data. G4HEPEvtInterface - reading 673 HEPEvt particles from pythia_event.data. >>> Event 27 0 hits are stored in RE05TrackerHitsCollection. - 40 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.5556974003718 (GeV) + 37 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.3900959615095 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 694 HEPEvt particles from pythia_event.data. >>> Event 28 0 hits are stored in RE05TrackerHitsCollection. 8 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.4089650157357 (GeV) + Total energy deposition in calorimeter : 1.411507606994 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 913 HEPEvt particles from pythia_event.data. >>> Event 29 @@ -852,15 +854,15 @@ G4HEPEvtInterface - reading 913 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 425 HEPEvt particles from pythia_event.data. >>> Event 30 - 39 hits are stored in RE05TrackerHitsCollection. - 46 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.9397312693146 (GeV) + 42 hits are stored in RE05TrackerHitsCollection. + 33 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 3.793890170614 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 466 HEPEvt particles from pythia_event.data. >>> Event 31 - 70 hits are stored in RE05TrackerHitsCollection. - 37 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.4709509570515 (GeV) + 39 hits are stored in RE05TrackerHitsCollection. + 35 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.9074187066264 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 954 HEPEvt particles from pythia_event.data. >>> Event 32 @@ -870,15 +872,15 @@ G4HEPEvtInterface - reading 954 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 575 HEPEvt particles from pythia_event.data. >>> Event 33 - 81 hits are stored in RE05TrackerHitsCollection. + 76 hits are stored in RE05TrackerHitsCollection. 15 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.9648469158342 (GeV) + Total energy deposition in calorimeter : 3.9608971641484 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1002 HEPEvt particles from pythia_event.data. >>> Event 34 - 120 hits are stored in RE05TrackerHitsCollection. - 60 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 10.269863492916 (GeV) + 158 hits are stored in RE05TrackerHitsCollection. + 59 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 9.3620671744609 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 440 HEPEvt particles from pythia_event.data. >>> Event 35 @@ -894,51 +896,51 @@ G4HEPEvtInterface - reading 389 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 318 HEPEvt particles from pythia_event.data. >>> Event 37 - 38 hits are stored in RE05TrackerHitsCollection. - 28 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.0468572162695 (GeV) + 27 hits are stored in RE05TrackerHitsCollection. + 32 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.7747815036694 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 367 HEPEvt particles from pythia_event.data. >>> Event 38 - 26 hits are stored in RE05TrackerHitsCollection. - 36 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.3502057260889 (GeV) + 61 hits are stored in RE05TrackerHitsCollection. + 44 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.4570524828464 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1000 HEPEvt particles from pythia_event.data. >>> Event 39 0 hits are stored in RE05TrackerHitsCollection. 4 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.72323980882655 (GeV) + Total energy deposition in calorimeter : 0.736801889133 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 253 HEPEvt particles from pythia_event.data. >>> Event 40 - 25 hits are stored in RE05TrackerHitsCollection. - 29 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.6338635538984 (GeV) + 22 hits are stored in RE05TrackerHitsCollection. + 30 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.62000031216 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 474 HEPEvt particles from pythia_event.data. >>> Event 41 - 19 hits are stored in RE05TrackerHitsCollection. - 28 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.3662394762033 (GeV) + 12 hits are stored in RE05TrackerHitsCollection. + 27 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.7867297418248 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 695 HEPEvt particles from pythia_event.data. >>> Event 42 - 113 hits are stored in RE05TrackerHitsCollection. - 58 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.216745964449 (GeV) + 78 hits are stored in RE05TrackerHitsCollection. + 53 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.3052630877755 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 760 HEPEvt particles from pythia_event.data. >>> Event 43 0 hits are stored in RE05TrackerHitsCollection. 13 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 2.2347642303548 (GeV) + Total energy deposition in calorimeter : 2.2521304491615 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 328 HEPEvt particles from pythia_event.data. >>> Event 44 0 hits are stored in RE05TrackerHitsCollection. 10 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.7633393683349 (GeV) + Total energy deposition in calorimeter : 1.7658319184049 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 574 HEPEvt particles from pythia_event.data. >>> Event 45 @@ -948,21 +950,21 @@ G4HEPEvtInterface - reading 574 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 420 HEPEvt particles from pythia_event.data. >>> Event 46 - 89 hits are stored in RE05TrackerHitsCollection. - 46 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.2455539179744 (GeV) + 50 hits are stored in RE05TrackerHitsCollection. + 49 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.1972410190808 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1092 HEPEvt particles from pythia_event.data. >>> Event 47 - 64 hits are stored in RE05TrackerHitsCollection. - 54 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.2907588023776 (GeV) + 71 hits are stored in RE05TrackerHitsCollection. + 52 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 9.1639718196686 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 708 HEPEvt particles from pythia_event.data. >>> Event 48 - 84 hits are stored in RE05TrackerHitsCollection. - 20 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.0318854657847 (GeV) + 47 hits are stored in RE05TrackerHitsCollection. + 19 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.005202985873 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 942 HEPEvt particles from pythia_event.data. >>> Event 49 @@ -972,15 +974,15 @@ G4HEPEvtInterface - reading 942 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 422 HEPEvt particles from pythia_event.data. >>> Event 50 - 31 hits are stored in RE05TrackerHitsCollection. - 37 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.3250728171464 (GeV) + 24 hits are stored in RE05TrackerHitsCollection. + 30 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.0446428481096 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 621 HEPEvt particles from pythia_event.data. >>> Event 51 - 74 hits are stored in RE05TrackerHitsCollection. - 39 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.5507815013718 (GeV) + 75 hits are stored in RE05TrackerHitsCollection. + 36 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.0925062088342 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 380 HEPEvt particles from pythia_event.data. >>> Event 52 @@ -996,39 +998,39 @@ G4HEPEvtInterface - reading 780 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 218 HEPEvt particles from pythia_event.data. >>> Event 54 - 22 hits are stored in RE05TrackerHitsCollection. - 32 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.1131793198683 (GeV) + 19 hits are stored in RE05TrackerHitsCollection. + 31 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.1872924863563 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 349 HEPEvt particles from pythia_event.data. >>> Event 55 - 46 hits are stored in RE05TrackerHitsCollection. - 27 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.8474532058986 (GeV) + 73 hits are stored in RE05TrackerHitsCollection. + 34 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.0907927014187 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 566 HEPEvt particles from pythia_event.data. >>> Event 56 - 33 hits are stored in RE05TrackerHitsCollection. - 34 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.714248212457 (GeV) + 32 hits are stored in RE05TrackerHitsCollection. + 38 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.8008165633365 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 467 HEPEvt particles from pythia_event.data. >>> Event 57 - 31 hits are stored in RE05TrackerHitsCollection. - 42 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.5082023681662 (GeV) + 56 hits are stored in RE05TrackerHitsCollection. + 38 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 6.0146881996628 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 745 HEPEvt particles from pythia_event.data. >>> Event 58 - 53 hits are stored in RE05TrackerHitsCollection. - 53 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.5619184025364 (GeV) + 47 hits are stored in RE05TrackerHitsCollection. + 41 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.0442928950946 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 742 HEPEvt particles from pythia_event.data. >>> Event 59 0 hits are stored in RE05TrackerHitsCollection. 12 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 2.1049155513169 (GeV) + Total energy deposition in calorimeter : 2.0901300866944 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 822 HEPEvt particles from pythia_event.data. >>> Event 60 @@ -1040,13 +1042,13 @@ G4HEPEvtInterface - reading 324 HEPEvt particles from pythia_event.data. >>> Event 61 0 hits are stored in RE05TrackerHitsCollection. 1 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.11350323450193 (GeV) + Total energy deposition in calorimeter : 0.11552236248637 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 389 HEPEvt particles from pythia_event.data. >>> Event 62 - 23 hits are stored in RE05TrackerHitsCollection. - 10 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.1660137232046 (GeV) + 26 hits are stored in RE05TrackerHitsCollection. + 115 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 65.69167104592 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 624 HEPEvt particles from pythia_event.data. >>> Event 63 @@ -1056,21 +1058,21 @@ G4HEPEvtInterface - reading 624 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 340 HEPEvt particles from pythia_event.data. >>> Event 64 - 7 hits are stored in RE05TrackerHitsCollection. - 10 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.8405773555141 (GeV) - 0 hits are stored in RE05MuonHitsCollection. + 27 hits are stored in RE05TrackerHitsCollection. + 23 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 2.7651661767461 (GeV) + 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 520 HEPEvt particles from pythia_event.data. >>> Event 65 - 65 hits are stored in RE05TrackerHitsCollection. - 45 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.0608595972311 (GeV) + 44 hits are stored in RE05TrackerHitsCollection. + 44 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.2260978393053 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 235 HEPEvt particles from pythia_event.data. >>> Event 66 - 9 hits are stored in RE05TrackerHitsCollection. - 22 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 2.8757371041938 (GeV) + 8 hits are stored in RE05TrackerHitsCollection. + 18 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 2.5000412732758 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 759 HEPEvt particles from pythia_event.data. >>> Event 67 @@ -1082,13 +1084,13 @@ G4HEPEvtInterface - reading 865 HEPEvt particles from pythia_event.data. >>> Event 68 0 hits are stored in RE05TrackerHitsCollection. 8 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.95844433401518 (GeV) + Total energy deposition in calorimeter : 0.93239275140443 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 264 HEPEvt particles from pythia_event.data. >>> Event 69 - 64 hits are stored in RE05TrackerHitsCollection. - 31 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.0590183941409 (GeV) + 78 hits are stored in RE05TrackerHitsCollection. + 26 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.5300079599597 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 785 HEPEvt particles from pythia_event.data. >>> Event 70 @@ -1100,49 +1102,49 @@ G4HEPEvtInterface - reading 618 HEPEvt particles from pythia_event.data. >>> Event 71 0 hits are stored in RE05TrackerHitsCollection. 4 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.59698170896109 (GeV) + Total energy deposition in calorimeter : 0.60527392750686 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 219 HEPEvt particles from pythia_event.data. >>> Event 72 - 43 hits are stored in RE05TrackerHitsCollection. - 49 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 10.017955048506 (GeV) + 89 hits are stored in RE05TrackerHitsCollection. + 41 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.6823836832723 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 480 HEPEvt particles from pythia_event.data. >>> Event 73 - 34 hits are stored in RE05TrackerHitsCollection. - 51 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 9.3391798236723 (GeV) + 30 hits are stored in RE05TrackerHitsCollection. + 46 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.9893754779592 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 614 HEPEvt particles from pythia_event.data. >>> Event 74 0 hits are stored in RE05TrackerHitsCollection. 4 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.57702653553674 (GeV) + Total energy deposition in calorimeter : 0.5752407765959 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 436 HEPEvt particles from pythia_event.data. >>> Event 75 13 hits are stored in RE05TrackerHitsCollection. - 58 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.2641445479466 (GeV) + 66 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 38.461368942991 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 355 HEPEvt particles from pythia_event.data. >>> Event 76 - 12 hits are stored in RE05TrackerHitsCollection. - 35 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.5732751305891 (GeV) + 10 hits are stored in RE05TrackerHitsCollection. + 30 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 3.675599183688 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 865 HEPEvt particles from pythia_event.data. >>> Event 77 - 19 hits are stored in RE05TrackerHitsCollection. - 99 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 10.702536316027 (GeV) + 21 hits are stored in RE05TrackerHitsCollection. + 83 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.6588447953075 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 752 HEPEvt particles from pythia_event.data. >>> Event 78 0 hits are stored in RE05TrackerHitsCollection. 4 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.67317393670294 (GeV) + Total energy deposition in calorimeter : 0.66964718473428 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 766 HEPEvt particles from pythia_event.data. >>> Event 79 @@ -1152,15 +1154,15 @@ G4HEPEvtInterface - reading 766 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 564 HEPEvt particles from pythia_event.data. >>> Event 80 - 28 hits are stored in RE05TrackerHitsCollection. - 54 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.7279830315511 (GeV) + 32 hits are stored in RE05TrackerHitsCollection. + 40 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.3273893947439 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 220 HEPEvt particles from pythia_event.data. >>> Event 81 - 26 hits are stored in RE05TrackerHitsCollection. - 39 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.76346902994 (GeV) + 56 hits are stored in RE05TrackerHitsCollection. + 34 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.7969131085197 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 823 HEPEvt particles from pythia_event.data. >>> Event 82 @@ -1170,45 +1172,45 @@ G4HEPEvtInterface - reading 823 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 914 HEPEvt particles from pythia_event.data. >>> Event 83 - 70 hits are stored in RE05TrackerHitsCollection. - 41 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 6.9423427204411 (GeV) + 128 hits are stored in RE05TrackerHitsCollection. + 43 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.296252902611 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 232 HEPEvt particles from pythia_event.data. >>> Event 84 - 33 hits are stored in RE05TrackerHitsCollection. - 32 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 10.775440335237 (GeV) + 29 hits are stored in RE05TrackerHitsCollection. + 30 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 9.5742864892667 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1034 HEPEvt particles from pythia_event.data. >>> Event 85 - 139 hits are stored in RE05TrackerHitsCollection. - 101 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 13.433953275912 (GeV) + 123 hits are stored in RE05TrackerHitsCollection. + 93 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 12.939499242317 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 673 HEPEvt particles from pythia_event.data. >>> Event 86 - 37 hits are stored in RE05TrackerHitsCollection. - 34 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.4568188747536 (GeV) + 45 hits are stored in RE05TrackerHitsCollection. + 37 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.1508932667107 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 246 HEPEvt particles from pythia_event.data. >>> Event 87 - 36 hits are stored in RE05TrackerHitsCollection. - 35 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.7191503727321 (GeV) + 32 hits are stored in RE05TrackerHitsCollection. + 42 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.2489293262874 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 1139 HEPEvt particles from pythia_event.data. >>> Event 88 0 hits are stored in RE05TrackerHitsCollection. 7 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.3463397652861 (GeV) + Total energy deposition in calorimeter : 1.339564108458 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 991 HEPEvt particles from pythia_event.data. >>> Event 89 - 94 hits are stored in RE05TrackerHitsCollection. - 51 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.6302766727503 (GeV) + 234 hits are stored in RE05TrackerHitsCollection. + 55 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.5642561057316 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 430 HEPEvt particles from pythia_event.data. >>> Event 90 @@ -1218,21 +1220,21 @@ G4HEPEvtInterface - reading 430 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 232 HEPEvt particles from pythia_event.data. >>> Event 91 - 30 hits are stored in RE05TrackerHitsCollection. - 31 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.3751768203942 (GeV) + 45 hits are stored in RE05TrackerHitsCollection. + 35 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.69850370825 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 410 HEPEvt particles from pythia_event.data. >>> Event 92 0 hits are stored in RE05TrackerHitsCollection. 5 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.98223848441459 (GeV) + Total energy deposition in calorimeter : 0.9870724361292 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 680 HEPEvt particles from pythia_event.data. >>> Event 93 - 78 hits are stored in RE05TrackerHitsCollection. - 62 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 7.1346905535314 (GeV) + 97 hits are stored in RE05TrackerHitsCollection. + 58 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.9771737976578 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 259 HEPEvt particles from pythia_event.data. >>> Event 94 @@ -1241,25 +1243,16 @@ G4HEPEvtInterface - reading 259 HEPEvt particles from pythia_event.data. Total energy deposition in calorimeter : 0 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 358 HEPEvt particles from pythia_event.data. - --------- WWWW ------- G4Exception-START -------- WWWW ------- -*** G4Exception : GeomNav0002 - issued by : G4MultiNavigator::GetGlobalExitNormal() -No Normal obtained despite having 2 candidate Navigators limiting the step! - -*** This is just a warning message. *** --------- WWWW -------- G4Exception-END --------- WWWW ------- - >>> Event 95 - 12 hits are stored in RE05TrackerHitsCollection. - 26 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 4.5841616131174 (GeV) + 18 hits are stored in RE05TrackerHitsCollection. + 24 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.3802308819445 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 546 HEPEvt particles from pythia_event.data. >>> Event 96 0 hits are stored in RE05TrackerHitsCollection. 3 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.52453519741303 (GeV) + Total energy deposition in calorimeter : 0.53010128231496 (GeV) 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 611 HEPEvt particles from pythia_event.data. >>> Event 97 @@ -1269,20 +1262,20 @@ G4HEPEvtInterface - reading 611 HEPEvt particles from pythia_event.data. 0 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 298 HEPEvt particles from pythia_event.data. >>> Event 98 - 96 hits are stored in RE05TrackerHitsCollection. - 28 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 5.7503735900182 (GeV) + 42 hits are stored in RE05TrackerHitsCollection. + 32 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 7.9515381402595 (GeV) 1 hits are stored in RE05MuonHitsCollection. G4HEPEvtInterface - reading 755 HEPEvt particles from pythia_event.data. >>> Event 99 - 62 hits are stored in RE05TrackerHitsCollection. - 54 hits are stored in RE05CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.1175497816775 (GeV) + 65 hits are stored in RE05TrackerHitsCollection. + 55 hits are stored in RE05CalorimeterHitsCollection. + Total energy deposition in calorimeter : 8.4865254160654 (GeV) 1 hits are stored in RE05MuonHitsCollection. Run terminated. Run Summary Number of events processed : 100 - User=23.23s Real=23.99s Sys=0.02s + User=36.23s Real=36.36s Sys=0.02s # G4 kernel has come to Quit state. UserDetectorConstruction deleted. @@ -1296,7 +1289,7 @@ EventManager deleted. Units table cleared. ================== Deleting memory pools =================== Number of memory pools allocated: 21 of which, static: 0 -Dynamic pools deleted: 21 / Total memory freed: 3.5 Mb +Dynamic pools deleted: 21 / Total memory freed: 3.3 Mb ============================================================ G4Allocator objects are deleted. UImanager deleted. diff --git a/examples/extended/runAndEvent/RE06/exampleRE06.out b/examples/extended/runAndEvent/RE06/exampleRE06.out index 9229bf9f429..b446a529d4b 100644 --- a/examples/extended/runAndEvent/RE06/exampleRE06.out +++ b/examples/extended/runAndEvent/RE06/exampleRE06.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-10-00-patch-03 (31-October-2014) + Geant4 version Name: geant4-10-00-patch-04 (6-March-2015) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -20,10 +20,12 @@ Current available graphics systems are: DAWNFILE (DAWNFILE) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) + OpenGLImmediateQt (OGLI, OGLIQt) OpenGLImmediateX (OGLIX) - OpenGLImmediateXm (OGLI, OGLIXm) + OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK) + OpenGLStoredQt (OGL, OGLS, OGLSQt) OpenGLStoredX (OGLSX) - OpenGLStoredXm (OGL, OGLS, OGLSXm) + OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK) RayTracer (RayTracer) RayTracerX (RayTracerX) VRML1FILE (VRML1FILE) @@ -439,7 +441,7 @@ Index : 6 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10 - User=3.57s Real=3.88s Sys=0.26s + User=3.59s Real=3.9s Sys=0.3s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -915,7 +917,7 @@ Index : 6 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10 - User=4.16s Real=4.56s Sys=0.36s + User=5.09s Real=5.49s Sys=0.38s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1422,7 +1424,7 @@ Index : 12 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10 - User=2.02s Real=2.39s Sys=0.2s + User=1.69s Real=1.85s Sys=0.15s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1958,7 +1960,7 @@ Index : 12 used in the geometry : Yes Run terminated. Run Summary Number of events processed : 10 - User=1.14s Real=1.29s Sys=0.11s + User=1.93s Real=2.11s Sys=0.18s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1966,124 +1968,124 @@ Region : Calor-A Production thresholds : gamma 10 um e- 10 um e+ 10 um Energy deposition in an event : - Absorber 520.817 MeV Gap 226.561 MeV + Absorber 554.914 MeV Gap 248.952 MeV Number of secondaries in an event : - gamma in Absorber 40.4 in Gap 8 - e- in Absorber 900.4 in Gap 858.3 - e+ in Absorber 0.3 in Gap 0.1 + gamma in Absorber 46.9 in Gap 11.9 + e- in Absorber 970.1 in Gap 955.2 + e+ in Absorber 1 in Gap 0.3 Minimum kinetic energy of generated secondaries : - gamma in Absorber 998.992 eV in Gap 1.0805 keV - e- in Absorber 17.9448 eV in Gap 1.09898 eV - e+ in Absorber 2.56756 MeV in Gap 13.8596 MeV + gamma in Absorber 993.51 eV in Gap 1.00562 keV + e- in Absorber 13.0615 eV in Gap 18.7259 eV + e+ in Absorber 1.96347 MeV in Gap 12.6084 MeV Total track length of e+/e- in an event : - Absorber 34.2005 cm Gap 30.4344 cm + Absorber 43.1836 cm Gap 42.7417 cm Total number of steps of e+/e- in an event : - Absorber 1368.1 Gap 1194.6 + Absorber 1511.3 Gap 1411.5 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt - 0 731.494 44.5 1623.3 0.3 604.992 2352.5 - 1 8.84849 2.2 38.9 0.1 25.3584 72.4 - 2 1.31018 0.4 21.7 0 2.68939 32.3 - 3 0.838778 0.1 16.3 0 1.16324 21.1 - 4 0.902742 0.2 13.4 0 1.43995 20.1 - 5 0.829086 0.2 13.5 0 1.94877 17.1 - 6 0.500866 0.1 9.5 0 0.982518 14 - 7 0.115415 0 3.5 0 0.110479 4.1 - 8 0.413731 0.3 4.2 0 0.958461 7 - 9 0.190474 0 1.5 0 0.36366 1.9 - 10 0.204811 0.3 2.2 0 0.852793 3.5 - 11 0.562441 0.1 3.9 0 2.86842 6.6 - 12 0.0600188 0 1.6 0 0.0724553 1.7 - 13 0.103282 0 1.2 0 0.0820324 1.5 - 14 0.00770336 0 0.7 0 0.00195892 0.7 - 15 0.896964 0 2.1 0 2.22664 4.3 - 16 0.0317646 0 0.4 0 0.0328414 0.5 - 17 0.00803849 0 0.3 0 0.00262358 0.4 - 18 0 0 0 0 0 0 - 19 0 0 0 0 0 0 + 0 770.871 50.5 1724.4 0.8 759.167 2590.2 + 1 15.4311 4.4 59 0 50.1389 118.3 + 2 5.71599 1.3 35 0.1 16.4621 62.6 + 3 4.61819 0.8 25 0.2 15.8008 41.2 + 4 2.33329 0.7 19.9 0.1 8.13284 28.8 + 5 1.76395 0.7 13.7 0 3.72917 20.7 + 6 0.93699 0 10.5 0 2.03045 14.5 + 7 0.345846 0 10.9 0 0.243061 12.7 + 8 0.178953 0.1 5.3 0 0.145614 6.1 + 9 0.165934 0 4.4 0 0.122615 5.3 + 10 0.268983 0 4.3 0 0.47814 5.6 + 11 0.15389 0 3.6 0 0.360442 4.8 + 12 0.56449 0.3 2 0.1 1.38361 3.3 + 13 0.153211 0 1.4 0 0.278916 1.7 + 14 0.04212 0 1.1 0 0.0235637 1.4 + 15 0.11324 0 1.3 0 0.147757 1.4 + 16 0.129211 0 0.9 0 0.551605 1.5 + 17 0.0122012 0 0.2 0 0.0159357 0.2 + 18 0.0450149 0 0.9 0 0.0336468 0.9 + 19 0.00125266 0 0.2 0 0.000166024 0.2 ############################################################ Region : Calor-B Production thresholds : gamma 100 um e- 100 um e+ 100 um Energy deposition in an event : - Absorber 538.277 MeV Gap 240.86 MeV + Absorber 755.631 MeV Gap 323.906 MeV Number of secondaries in an event : - gamma in Absorber 40.5 in Gap 10 - e- in Absorber 341.2 in Gap 184.8 - e+ in Absorber 1.3 in Gap 0.2 + gamma in Absorber 101.4 in Gap 29.7 + e- in Absorber 693.2 in Gap 342.6 + e+ in Absorber 5.8 in Gap 1.3 Minimum kinetic energy of generated secondaries : - gamma in Absorber 2.39297 keV in Gap 1.16545 keV - e- in Absorber 22.041 eV in Gap 23.5202 eV - e+ in Absorber 563.709 keV in Gap 2.98291 MeV + gamma in Absorber 2.35396 keV in Gap 1.11306 keV + e- in Absorber 6.95074 eV in Gap 10.2737 eV + e+ in Absorber 324.979 keV in Gap 4.40915 MeV Total track length of e+/e- in an event : - Absorber 36.6037 cm Gap 36.6475 cm + Absorber 89.8735 cm Gap 81.9863 cm Total number of steps of e+/e- in an event : - Absorber 686.8 Gap 407.7 + Absorber 1407.6 Gap 722.9 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt - 0 738.802 40.3 354.6 0.9 605.144 797.7 - 1 24.1924 6.9 41.6 0.3 82.6836 104.5 - 2 5.89526 1.4 28.8 0.1 18.143 49.2 - 3 2.37157 0 17.9 0 7.23095 24.1 - 4 0.859785 0 17.4 0 0.88451 25.3 - 5 0.96184 0 13.4 0 1.98442 18.1 - 6 0.710574 0 10.3 0 2.02448 12.3 - 7 0.625167 0 6.9 0 1.74038 9.4 - 8 2.02661 0.8 8.7 0.1 5.06258 14.1 - 9 0.322642 0 6.1 0 0.731323 7.3 - 10 0.181941 0 3.8 0 0.14795 4.3 - 11 0.158583 0 3 0 0.136474 3.6 - 12 0.0953523 0 2.2 0 0.0840956 2.4 - 13 0.170294 0.1 2 0 0.37219 2.7 - 14 0.0590014 0 3.1 0 0.0266557 3.3 - 15 0.0186695 0 1.5 0 0.00491006 1.6 - 16 0.0280617 0 0.9 0 0.0138984 1.1 - 17 0.132367 0 0.6 0 0.266307 0.7 - 18 0.0132913 0 0.5 0 0.00523569 0.7 - 19 0.264058 0 0.3 0 0.694053 0.6 + 0 955.497 97.2 523.8 5.1 1326 1283.8 + 1 70.1375 21.3 116.5 1 240.917 263 + 2 15.2045 3.6 71.3 0.2 45.8409 127.5 + 3 8.11044 1.7 63.8 0.1 23.5476 89.8 + 4 4.46443 0.8 56.3 0 11.5979 73.8 + 5 10.2192 3.1 48.7 0.2 32.7093 74.3 + 6 3.98146 0.8 32.2 0.1 9.12976 48.1 + 7 1.4967 0 23.6 0 3.03443 31.6 + 8 3.23975 0.6 21.6 0.1 10.1695 28.2 + 9 1.78328 0.5 18.9 0 3.03642 24.9 + 10 0.700815 0.1 13.1 0 1.25395 18.6 + 11 0.737322 0 10.6 0 1.13943 12.7 + 12 0.722248 0 7.6 0 1.98011 11.1 + 13 0.327628 0 5.9 0 0.371627 7.7 + 14 0.211591 0 5.4 0 0.175218 6 + 15 0.473443 0.2 3.6 0.1 0.94302 4.4 + 16 0.205226 0 2.1 0 0.319072 2.6 + 17 0.123287 0 3.1 0 0.0984445 3.3 + 18 0.202332 0.2 1.4 0.1 0.290781 3.6 + 19 0.306621 0 1.6 0 0.728055 2 ############################################################ Region : Calor-C Production thresholds : gamma 1 mm e- 1 mm e+ 1 mm Energy deposition in an event : - Absorber 561.679 MeV Gap 246.293 MeV + Absorber 906.015 MeV Gap 405.298 MeV Number of secondaries in an event : - gamma in Absorber 30.5 in Gap 10.6 - e- in Absorber 166.1 in Gap 77.9 - e+ in Absorber 1.5 in Gap 0.2 + gamma in Absorber 125.1 in Gap 39.5 + e- in Absorber 689.3 in Gap 301.1 + e+ in Absorber 8.9 in Gap 2.5 Minimum kinetic energy of generated secondaries : - gamma in Absorber 6.96066 keV in Gap 3.32214 keV - e- in Absorber 1.28964 eV in Gap 6.11328 eV - e+ in Absorber 504.164 keV in Gap 1.60712 MeV + gamma in Absorber 6.90925 keV in Gap 2.96831 keV + e- in Absorber 0.625126 eV in Gap 6.11328 eV + e+ in Absorber 164.719 keV in Gap 581.604 keV Total track length of e+/e- in an event : - Absorber 37.7108 cm Gap 36.6245 cm + Absorber 1.18214 m Gap 1.2139 m Total number of steps of e+/e- in an event : - Absorber 449.9 Gap 231.3 + Absorber 1477.5 Gap 712.1 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt - 0 775.293 34.6 114.9 1 648.681 479.2 - 1 19.7477 4.1 30.3 0.2 61.1584 67.3 - 2 5.18047 0.9 19.9 0.1 16.1259 33.2 - 3 3.4916 1.2 13.7 0.3 10.794 22.9 - 4 1.29255 0.2 14.3 0.1 2.48347 20.6 - 5 0.522268 0 10.8 0 0.981545 12.3 - 6 0.440084 0 9.2 0 0.516266 10 - 7 0.327387 0 6.5 0 0.297611 7 - 8 0.270156 0 5.3 0 0.308802 6 - 9 0.374348 0.1 4.6 0 0.681795 5.9 - 10 0.292401 0 3.6 0 0.369319 4.3 - 11 0.114091 0 1.9 0 0.146997 2.1 - 12 0.0353307 0 1.3 0 0.0153189 1.3 - 13 0.0288419 0 1.3 0 0.0099609 1.4 - 14 0.0249309 0 1.2 0 0.012248 1.2 - 15 0.0594284 0 0.8 0 0.053621 1.8 - 16 0.0791991 0 1.3 0 0.0641081 1.4 - 17 0.0309966 0 0.9 0 0.0201232 0.9 - 18 0.14187 0 0.6 0 0.211775 0.7 - 19 0.119428 0 1 0 0.174898 1 + 0 1113.35 123.1 268.3 7.9 1785.23 1024.3 + 1 103.852 23.4 135.2 1.5 354.238 332.9 + 2 31.1889 6.9 120.2 0.5 88.7187 190.9 + 3 22.556 4.6 93.9 0.9 67.1074 151 + 4 12.7255 2.8 83 0.3 34.1477 113.7 + 5 8.61389 1.8 58.9 0.1 23.7895 78.6 + 6 5.63399 1 52.5 0.1 13.7191 69.9 + 7 2.51328 0.2 36.7 0 7.30033 47 + 8 2.86024 0.2 33.7 0 6.88192 45.8 + 9 3.26959 0.4 27.3 0.1 7.9527 35.9 + 10 1.19773 0.1 19.2 0 1.68856 23.7 + 11 1.00427 0 16.8 0 1.5277 23.4 + 12 0.559245 0 11.1 0 0.83464 12.6 + 13 0.561478 0.1 8.8 0 0.951977 10.1 + 14 0.415752 0 5.3 0 0.566809 6.4 + 15 0.223932 0 5.4 0 0.241578 7.1 + 16 0.164995 0 2.5 0 0.298038 2.8 + 17 0.147777 0 3.5 0 0.10681 3.9 + 18 0.175687 0 1.9 0 0.356519 2.7 + 19 0.0775196 0 3.2 0 0.0448631 3.5 ############################################################ /run/dumpCouples @@ -2175,6 +2177,6 @@ Visualization Manager deleting... G4 kernel has come to Quit state. ================== Deleting memory pools =================== Number of memory pools allocated: 12 of which, static: 0 -Dynamic pools deleted: 12 / Total memory freed: 0.92 Mb +Dynamic pools deleted: 12 / Total memory freed: 0.94 Mb ============================================================ RunManagerKernel is deleted. Good bye :) diff --git a/source/GNUmakefile b/source/GNUmakefile index a07a79f6074..6a0aa1f6291 100644 --- a/source/GNUmakefile +++ b/source/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile 84634 2014-10-17 10:34:52Z gcosmo $ +# $Id: GNUmakefile 88524 2015-02-25 15:03:25Z gcosmo $ # ----------------------------------------------------------------- # "gmake" makes default libraries for each subdomain. # "gmake global" makes global libraries for each subdomain. @@ -168,8 +168,8 @@ endif banner: @$(ECHO) "*************************************************************" - @$(ECHO) " Installation Geant4 version geant4-10-00-patch-03 " - @$(ECHO) " Copyright (C) 1994-2014 Geant4 Collaboration " + @$(ECHO) " Installation Geant4 version geant4-10-00-patch-04 " + @$(ECHO) " Copyright (C) 1994-2015 Geant4 Collaboration " @$(ECHO) "*************************************************************" clean_libs:: diff --git a/source/geometry/navigation/History b/source/geometry/navigation/History index 39172e99432..b9dab4f2951 100644 --- a/source/geometry/navigation/History +++ b/source/geometry/navigation/History @@ -1,4 +1,4 @@ -$Id: History 84727 2014-10-20 08:30:47Z gcosmo $ +$Id: History 88518 2015-02-25 13:22:30Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,42 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +December 15, 2014 - J.Apostolakis (geomnav-V09-06-25) +--------------------------------- +- G4ErrorPropagationNavigator: revise implementation of ComputeStep, to + avoid calling G4Navigator::ComputeSafety (which has side effects.) + Addresses problem report #1679. + +November 27, 2014 - G.Cosmo +--------------------------- +- Added protection in G4ReplicaNavigation::DistanceToOutRad() for potential + rare cases of negative value to sqrt() in equation calculation for rmin/rmax + intersection. +- Improved warning printout in G4Navigator::GetGlobalExitNormal(). + +November 20, 2014 - J.Apostolakis +--------------------------------- +- G4ErrorPropagationNavigator: fix to make normal a unit vector, + and fix for Coverity issue, to protect against null 'target'. + Addressing problem report #1679. + +November 19, 2014 - G.Cosmo +--------------------------- +- Some code cleanup in G4Navigator source. + +November 18, 2014 - J.Apostolakis +--------------------------------- +- G4ErrorPropagationNavigator: added GetGlobalExitNormal() method to + correspond to update of G4Navigator interface in Geant4 9.5. + Addresses problem report #1679. +- G4Navigator: small fix to calculation of stored step endpoint, for steps + that do not hit a boundary. +- Fixed GNUmakefile in test. + +November 14, 2014 - J.Apostolakis +--------------------------------- +- G4Navigator: Corrections for Exit Normal. + October 20, 2014 - G.Cosmo (geomnav-V09-06-24) -------------------------- - Leave out changes in G4FieldPropagation.cc laying on the trunk... diff --git a/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh b/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh index 3822deb7e6e..25ba0e83162 100644 --- a/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh +++ b/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4ErrorPropagationNavigator.hh 66356 2012-12-18 09:02:32Z gcosmo $ +// $Id: G4ErrorPropagationNavigator.hh 88518 2015-02-25 13:22:30Z gcosmo $ // // // -------------------------------------------------------------------- @@ -66,7 +66,22 @@ class G4ErrorPropagationNavigator : public G4Navigator const G4bool keepState = true); // Calls the navigation in the detector geometry and then checks // if the distance to surface is smaller than the proposed safety + + G4ThreeVector GetGlobalExitNormal(const G4ThreeVector& point, + G4bool* valid); + // Return Exit Surface Normal and validity too. Can only be called if + // the Navigator's last Step has crossed a volume geometrical boundary. + // Normal points out of the volume exited and/or into the volume entered. + G4double TargetSafetyFromPoint( const G4ThreeVector &pGlobalpoint ); + // Isotropic safety for 'Target' + + //-- NOT implemented, as it is difficult to define the coordinate system: + // G4ThreeVector GetLocalExitNormal(G4bool* valid); + // G4ThreeVector GetLocalExitNormalAndCheck(const G4ThreeVector& point, + // G4bool* valid); + // Convention: + // The *local* normal is in the coordinate system of the *final* volume. }; #endif diff --git a/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc b/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc index 5aa2524b3db..69b8e388486 100644 --- a/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc +++ b/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4ErrorPropagationNavigator.cc 66356 2012-12-18 09:02:32Z gcosmo $ +// $Id: G4ErrorPropagationNavigator.cc 88518 2015-02-25 13:22:30Z gcosmo $ // // // -------------------------------------------------------------------- @@ -38,6 +38,10 @@ #include "G4ErrorPropagatorData.hh" #include "G4ErrorSurfaceTarget.hh" +#include "G4ErrorPlaneSurfaceTarget.hh" +#include "G4ErrorCylSurfaceTarget.hh" + + //------------------------------------------------------------------- G4ErrorPropagationNavigator::G4ErrorPropagationNavigator() @@ -59,9 +63,11 @@ ComputeStep ( const G4ThreeVector &pGlobalPoint, const G4double pCurrentProposedStepLength, G4double &pNewSafety ) { + G4double safetyGeom= DBL_MAX; + G4double Step = G4Navigator::ComputeStep(pGlobalPoint, pDirection, pCurrentProposedStepLength, - pNewSafety); + safetyGeom); G4ErrorPropagatorData * g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); @@ -106,7 +112,9 @@ ComputeStep ( const G4ThreeVector &pGlobalPoint, } } } - pNewSafety = ComputeSafety(pGlobalPoint, pCurrentProposedStepLength); + G4double safetyTarget = TargetSafetyFromPoint(pGlobalPoint); + // Avoid call to G4Navigator::ComputeSafety - which could have side effects + pNewSafety= std::min(safetyGeom, safetyTarget); #ifdef G4VERBOSE if( G4ErrorPropagatorData::verbose() >= 3 ) @@ -123,12 +131,9 @@ ComputeStep ( const G4ThreeVector &pGlobalPoint, //------------------------------------------------------------------- G4double G4ErrorPropagationNavigator:: -ComputeSafety( const G4ThreeVector &pGlobalpoint, - const G4double pMaxLength, - const G4bool keepState ) +TargetSafetyFromPoint( const G4ThreeVector &pGlobalpoint ) { - G4double newSafety = G4Navigator::ComputeSafety(pGlobalpoint, - pMaxLength, keepState); + G4double safety= DBL_MAX; G4ErrorPropagatorData *g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); @@ -138,13 +143,88 @@ ComputeSafety( const G4ThreeVector &pGlobalpoint, const G4ErrorTarget* target = g4edata->GetTarget(); if( target != 0 ) { - G4double distance = target->GetDistanceFromPoint(pGlobalpoint); - - if(distanceGetDistanceFromPoint(pGlobalpoint); } } - return newSafety; -} + return safety; +} + +//------------------------------------------------------------------- + +G4double G4ErrorPropagationNavigator:: +ComputeSafety( const G4ThreeVector &pGlobalPoint, + const G4double pMaxLength, + const G4bool keepState ) +{ + G4double safetyGeom = G4Navigator::ComputeSafety(pGlobalPoint, + pMaxLength, keepState); + + G4double safetyTarget = TargetSafetyFromPoint( pGlobalPoint ); + + return std::min(safetyGeom, safetyTarget); +} + +//------------------------------------------------------------------- + +G4ThreeVector G4ErrorPropagationNavigator:: +GetGlobalExitNormal(const G4ThreeVector& point, G4bool* valid) +{ + G4ErrorPropagatorData *g4edata + = G4ErrorPropagatorData::GetErrorPropagatorData(); + const G4ErrorTarget* target = 0; + + G4ThreeVector normal(0.0, 0.0, 0.0); + G4double distance= 0; + + // Determine which 'geometry' limited the step + if (g4edata) + { + target = g4edata->GetTarget(); + if(target) + { + distance = target->GetDistanceFromPoint(point); + } + } + + if( distance > kCarTolerance // Not reached the target. + || (!target) ) + // If a target does not exist, this seems the best we can do + { + normal= G4Navigator::GetGlobalExitNormal(point, valid); + } + else + { + switch( target->GetType() ) + { + case G4ErrorTarget_GeomVolume: + // The volume is in the 'real' mass geometry + normal= G4Navigator::GetGlobalExitNormal(point, valid); + break; + case G4ErrorTarget_TrkL: + normal= G4ThreeVector( 0.0, 0.0, 0.0); + *valid= false; + G4Exception("G4ErrorPropagationNavigator::GetGlobalExitNormal", + "Geometry1003", + JustWarning, "Unexpected value of Target type"); + break; + case G4ErrorTarget_PlaneSurface: + case G4ErrorTarget_CylindricalSurface: + const G4ErrorSurfaceTarget* surfaceTarget= + static_cast(target); + normal= surfaceTarget->GetTangentPlane(point).normal().unit(); + *valid= true; + break; + +// default: +// normal= G4ThreeVector( 0.0, 0.0, 0.0); +// *valid= false; +// G4Exception("G4ErrorPropagationNavigator::GetGlobalExitNormal", +// "Geometry:003", +// FatalException, "Impossible value of Target type"); +// exit(1); +// break; + } + } + return normal; +} + diff --git a/source/geometry/navigation/src/G4Navigator.cc b/source/geometry/navigation/src/G4Navigator.cc index 213da268e04..70673b2aa87 100644 --- a/source/geometry/navigation/src/G4Navigator.cc +++ b/source/geometry/navigation/src/G4Navigator.cc @@ -80,7 +80,9 @@ G4Navigator::G4Navigator() // ******************************************************************** // G4Navigator::~G4Navigator() -{ delete fpVoxelSafety; } +{ + delete fpVoxelSafety; +} // ******************************************************************** // ResetHierarchyAndLocate @@ -112,6 +114,8 @@ G4Navigator::ResetHierarchyAndLocate(const G4ThreeVector &p, // fEntering - True if entering `daughter' volume (or replica) // whether daughter of last mother directly // or daughter of that volume's ancestor. +// fExiting - True if exited 'mother' volume +// (always ? - how about if going back down ? - tbc) // ******************************************************************** // G4VPhysicalVolume* @@ -137,16 +141,15 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, globalDirection=*pGlobalDirection; } - #ifdef G4VERBOSE if( fVerbose > 2 ) { G4int oldcoutPrec = G4cout.precision(8); G4cout << "*** G4Navigator::LocateGlobalPointAndSetup: ***" << G4endl; G4cout << " Called with arguments: " << G4endl - << " Globalpoint = " << globalPoint << G4endl - << " RelativeSearch = " << relativeSearch << G4endl; - if( fVerbose == 4 ) + << " Globalpoint = " << globalPoint << G4endl + << " RelativeSearch = " << relativeSearch << G4endl; + if( fVerbose >= 4 ) { G4cout << " ----- Upon entering:" << G4endl; PrintState(); @@ -155,6 +158,9 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, } #endif + G4int noLevelsExited=0 ; + G4int noLevelsEntered= 0; + if ( !relativeSearch ) { ResetStackAndState(); @@ -168,6 +174,8 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, fExitedMother = fExiting; // Remember if ( fExiting ) { + noLevelsExited++; // count this first level entered too + if ( fHistory.GetDepth() ) { fBlockedPhysicalVolume = fHistory.GetTopVolume(); @@ -178,6 +186,12 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, { fLastLocatedPointLocal = localPoint; fLocatedOutsideWorld = true; + fBlockedPhysicalVolume = 0; // to be sure + fBlockedReplicaNo = -1; + fEntering = false; // No longer + fEnteredDaughter = false; + fExitedMother = true; // ?? + return 0; // Have exited world volume } // A fix for the case where a volume is "entered" at an edge @@ -185,14 +199,23 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, // - This stops it from exiting further volumes and cycling // - However ReplicaNavigator treats this case itself // + // assert( fBlockedPhysicalVolume!=0 ); + + // Expect to be on edge => on surface + // if ( fLocatedOnEdge && (VolumeType(fBlockedPhysicalVolume)!=kReplica )) { fExiting= false; + // Consider effect on Exit Normal !? } } else if ( fEntering ) { + // assert( fBlockedPhysicalVolume!=0 ); + + noLevelsEntered++; // count the first level entered too + switch (VolumeType(fBlockedPhysicalVolume)) { case kNormal: @@ -259,7 +282,6 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, // else // o containing volume found // - G4int noLevelsExited=0 ; while (notKnownContained) { @@ -365,7 +387,8 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, { // The first transformation was done by the sub-navigator // - const G4RotationMatrix* mRot=fBlockedPhysicalVolume->GetRotation(); + const G4RotationMatrix* mRot = + fBlockedPhysicalVolume->GetRotation(); if( mRot ) { fGrandMotherExitNormal *= (*mRot).inverse(); @@ -402,7 +425,7 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, // o Positioned daughters & voxels // o Positioned daughters & no voxels - noResult = true; // noResult should be renamed to + noResult = true; // noResult should be renamed to // something like enteredLevel, as that is its meaning. do { @@ -473,6 +496,8 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, if ( noResult ) { + noLevelsEntered++; + // Entering a daughter after ascending // // The blocked volume is no longer valid - it was for another level @@ -492,7 +517,11 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, const G4RotationMatrix* mRot = enteredPhysical->GetRotation(); if( mRot ) { - fGrandMotherExitNormal *= (*mRot).inverse(); + // Go deeper, i.e. move 'down' in the hierarchy + // Apply direct rotation, not inverse + // + fGrandMotherExitNormal *= (*mRot); + fChangedGrandMotherRefFrame= true; } } @@ -519,7 +548,7 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, G4cout << " Return value = new volume = " << curPhysVol_Name << G4endl; G4cout << " ----- Upon exiting:" << G4endl; PrintState(); - if( fVerbose == 5 ) + if( fVerbose >= 5 ) { G4cout << "Upon exiting LocateGlobalPointAndSetup():" << G4endl; G4cout << " History = " << G4endl << fHistory << G4endl << G4endl; @@ -548,7 +577,13 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, // void G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoint) -{ +{ +#ifdef G4DEBUG_NAVIGATION + // Check: Either step was not limited by a boundary + // or else the full step is no longer being taken + assert( !fWasLimitedByGeometry ); +#endif + fLastLocatedPointLocal = ComputeLocalPoint(pGlobalpoint); fLastTriedStepComputation= false; fChangedGrandMotherRefFrame= false; // Frame for Exit Normal @@ -616,13 +651,14 @@ G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoint) // Save the state, in case this is a parasitic call // Save fValidExitNormal, fExitNormal, fExiting, fEntering, // fBlockedPhysicalVolume, fBlockedReplicaNo, fLastStepWasZero; -// Note: the state of dependent objects is not currently saved. -// This means that the full state is changed by calls between -// SetSavedState() and RestoreSavedState(); // ******************************************************************** // void G4Navigator::SetSavedState() { + // Note: the state of dependent objects is not currently saved. + // ( This means that the full state is changed by calls between + // SetSavedState() and RestoreSavedState(); + fSaveState.sExitNormal = fExitNormal; fSaveState.sValidExitNormal = fValidExitNormal; fSaveState.sExiting = fExiting; @@ -668,7 +704,8 @@ void G4Navigator::RestoreSavedState() fEnteredDaughter= fSaveState.sEnteredDaughter; fExitedMother= fSaveState.sExitedMother; fWasLimitedByGeometry= fSaveState.sWasLimitedByGeometry; - + + // The 'expected' behaviour is to restore these too (fix 2014.05.26) fPreviousSftOrigin= fSaveState.sPreviousSftOrigin; fPreviousSafety= fSaveState.sPreviousSafety; } @@ -1002,7 +1039,8 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, fEnteredDaughter = fEntering; // I expect to enter a volume in this Step fExitedMother = fExiting; - fStepEndPoint = pGlobalpoint + Step * pDirection; + fStepEndPoint = pGlobalpoint + + std::min(Step,pCurrentProposedStepLength) * pDirection; fLastStepEndPointLocal = fLastLocatedPointLocal + Step * localDirection; if( fExiting ) @@ -1168,7 +1206,7 @@ G4double G4Navigator::CheckNextStep( const G4ThreeVector& pGlobalpoint, // ***> TODO: restore subnavigator state // if( last_located) Need Position of last location // if( last_computed step) Need Endposition of last step - + return step; } @@ -1247,12 +1285,16 @@ void G4Navigator::SetupHierarchy() pParam->ComputeTransformation(replicaNo, current); G4TouchableHistory *pTouchable= 0; - if( pParam->IsNested() ) { + if( pParam->IsNested() ) + { pTouchable= new G4TouchableHistory( fHistory ); - pTouchable->MoveUpHistory(); // move up to the parent level - // Adequate only if Nested at the Branch level (last) + pTouchable->MoveUpHistory(); // Move up to the parent level + // Adequate only if Nested at the Branch level (last) // To extend to other cases: - // pTouchable->MoveUpHistory(cdepth-i-1); // move to the parent level of *Current* level // Could replace this line and constructor with a revised c-tor for History( levels to drop) + // pTouchable->MoveUpHistory(cdepth-i-1); + // Move to the parent level of *Current* level + // Could replace this line and constructor with a revised + // c-tor for History(levels to drop) } // Set up the correct solid and material in Logical Volume // @@ -1361,7 +1403,7 @@ G4ThreeVector G4Navigator::GetLocalExitNormal( G4bool* valid ) else // if( inSideIt == kInside ) { message << "Point is Inside. " << G4endl - << " Safety (from inside) = " << safety << G4endl; + << " Safety (from inside) = " << safety << G4endl; } G4Exception("G4Navigator::GetLocalExitNormal()", "GeomNav1001", JustWarning, message); @@ -1419,6 +1461,7 @@ G4ThreeVector G4Navigator::GetLocalExitNormal( G4bool* valid ) fCalculatedExitNormal= false; G4ExceptionDescription message; message << "Function called when *NOT* at a Boundary." << G4endl; + message << "Exit Normal not calculated." << G4endl; G4Exception("G4Navigator::GetLocalExitNormal()", "GeomNav0003", JustWarning, message); } @@ -1471,6 +1514,7 @@ G4Navigator::GetMotherToDaughterTransform( G4VPhysicalVolume *pEnteringPhysVol, pEnteringPhysVol->GetTranslation()).Invert(); } + // ******************************************************************** // GetLocalExitNormalAndCheck // @@ -1479,8 +1523,8 @@ G4Navigator::GetMotherToDaughterTransform( G4VPhysicalVolume *pEnteringPhysVol, // checks the current point against expected 'local' value. // ******************************************************************** // -G4ThreeVector G4Navigator:: -GetLocalExitNormalAndCheck( +G4ThreeVector +G4Navigator::GetLocalExitNormalAndCheck( #ifdef G4DEBUG_NAVIGATION const G4ThreeVector& ExpectedBoundaryPointGlobal, #else @@ -1507,6 +1551,7 @@ GetLocalExitNormalAndCheck( return GetLocalExitNormal( pValid); } + // ******************************************************************** // GetGlobalExitNormal // @@ -1520,14 +1565,64 @@ G4Navigator::GetGlobalExitNormal(const G4ThreeVector& IntersectPointGlobal, { G4bool validNormal; G4ThreeVector localNormal, globalNormal; - - if( fLastTriedStepComputation && fExiting ) + G4bool usingStored; + + usingStored= + fCalculatedExitNormal && + ( ( fLastTriedStepComputation && fExiting) // Just calculated it + || // No locate in between + (!fLastTriedStepComputation + && (IntersectPointGlobal-fStepEndPoint).mag2() + < (10.0*kCarTolerance*kCarTolerance) + ) // Calculated it 'just' before & then called locate + // but it did not move position + ); + + if( usingStored ) { - // This was computed in ComputeStep -- and only on arrival at boundary + // This was computed in last call to ComputeStep + // and only if it arrived at boundary // globalNormal = fExitNormalGlobalFrame; - *pNormalCalculated = true; // ComputeStep always computes it if Exiting - // (fExiting==true) + G4double normMag2 = globalNormal.mag2(); + if( std::fabs ( normMag2 - 1.0 ) < perMillion ) // Value is good + { + *pNormalCalculated = true; // ComputeStep always computes it if Exiting + // (fExiting==true) + } + else + { + G4ExceptionDescription message; + message.precision(10); + message << " WARNING> Expected normal-global-frame to be valid, " + << " i.e. a unit vector!" << G4endl + << " - but |normal| = " << std::sqrt(normMag2) + << " - and |normal|^2 = " << normMag2 << G4endl + << " which differs from 1.0 by " << normMag2 - 1.0 << G4endl + << " n = " << fExitNormalGlobalFrame << G4endl; + message << "============================================================" + << G4endl; + G4int oldVerbose = fVerbose; + fVerbose=4; + message << " State of Navigator: " << G4endl; + message << *this << G4endl; + fVerbose = oldVerbose; + message << "============================================================" + << G4endl; + + G4Exception("G4Navigator::GetGlobalExitNormal()", + "GeomNav0003",JustWarning, message, + "Value obtained from stored global-normal is not a unit vector."); + + // (Re)Compute it now -- as either it was not computed, or it is wrong. + // + localNormal = GetLocalExitNormalAndCheck(IntersectPointGlobal, + &validNormal); + *pNormalCalculated = fCalculatedExitNormal; + + G4AffineTransform localToGlobal = GetLocalToGlobalTransform(); + globalNormal = localToGlobal.TransformAxis( localNormal ); + } } else { @@ -1535,6 +1630,8 @@ G4Navigator::GetGlobalExitNormal(const G4ThreeVector& IntersectPointGlobal, *pNormalCalculated = fCalculatedExitNormal; #ifdef G4DEBUG_NAVIGATION + usingStored= false; + if( (!validNormal) && !fCalculatedExitNormal) { G4ExceptionDescription edN; @@ -1560,10 +1657,10 @@ G4Navigator::GetGlobalExitNormal(const G4ThreeVector& IntersectPointGlobal, edN << "G4Navigator::GetGlobalExitNormal: " << " Using Local Normal - from call to GetLocalExitNormalAndCheck. " << G4endl - << " Local Exit Normal = " << localNormal << " || = " - << std::sqrt(localMag2) << G4endl - << " Global Exit Normal = " << globalNormal << " || = " - << globalNormal.mag() << G4endl; + << " Local Exit Normal : " << " || = " << std::sqrt(localMag2) + << " vec = " << localNormal << G4endl + << " Global Exit Normal : " << " || = " << globalNormal.mag() + << " vec = " << globalNormal << G4endl; edN << " Calculated It = " << fCalculatedExitNormal << G4endl; G4Exception("G4Navigator::GetGlobalExitNormal()", @@ -1576,17 +1673,17 @@ G4Navigator::GetGlobalExitNormal(const G4ThreeVector& IntersectPointGlobal, } #ifdef G4DEBUG_NAVIGATION - // Temporary extra checks - if( fLastTriedStepComputation && fExiting) + if( usingStored ) { - localNormal = GetLocalExitNormalAndCheck( IntersectPointGlobal, &validNormal); - *pNormalCalculated = fCalculatedExitNormal; + G4ThreeVector globalNormAgn; + localNormal= GetLocalExitNormalAndCheck(IntersectPointGlobal, &validNormal); + G4AffineTransform localToGlobal = GetLocalToGlobalTransform(); - globalNormal = localToGlobal.TransformAxis( localNormal ); + globalNormAgn = localToGlobal.TransformAxis( localNormal ); // Check the value computed against fExitNormalGlobalFrame - G4ThreeVector diffNorm = globalNormal - fExitNormalGlobalFrame; + G4ThreeVector diffNorm = globalNormAgn - fExitNormalGlobalFrame; if( diffNorm.mag2() > perMillion*CLHEP::perMillion) { G4ExceptionDescription edDfn; @@ -1595,7 +1692,7 @@ G4Navigator::GetGlobalExitNormal(const G4ThreeVector& IntersectPointGlobal, edDfn << " Magnitude of diff = " << diffNorm.mag() << G4endl; edDfn << " Normal stored (Global) = " << fExitNormalGlobalFrame << G4endl; - edDfn << " Global Computed from Local = " << globalNormal << G4endl; + edDfn << " Global Computed from Local = " << globalNormAgn << G4endl; G4Exception("G4Navigator::GetGlobalExitNormal()", "GeomNav0003", JustWarning, edDfn); } @@ -1641,14 +1738,30 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, } #endif - if (keepState) { SetSavedState(); } - G4double distEndpointSq = (pGlobalpoint-fStepEndPoint).mag2(); G4bool stayedOnEndpoint = distEndpointSq < kCarTolerance*kCarTolerance; G4bool endpointOnSurface = fEnteredDaughter || fExitedMother; - if( !(endpointOnSurface && stayedOnEndpoint) ) + if( endpointOnSurface && stayedOnEndpoint ) + { +#ifdef G4DEBUG_NAVIGATION + if( fVerbose >= 2 ) + { + G4cout << " G4Navigator::ComputeSafety() finds that point - " + << pGlobalpoint << " - is on surface " << G4endl; + if( fEnteredDaughter ) { G4cout << " entered new daughter volume"; } + if( fExitedMother ) { G4cout << " and exited previous volume."; } + G4cout << G4endl; + G4cout << " EndPoint was = " << fStepEndPoint << G4endl; + } +#endif + newSafety = 0.0; + // return newSafety; + } + else // if( !(endpointOnSurface && stayedOnEndpoint) ) { + if (keepState) { SetSavedState(); } + // Pseudo-relocate to this point (updates voxel information only) // LocateGlobalPointWithinVolume( pGlobalpoint ); @@ -1716,35 +1829,20 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, newSafety = freplicaNav.ComputeSafety(pGlobalpoint, localPoint, fHistory, pMaxLength); } - } - else // if( endpointOnSurface && stayedOnEndpoint ) - { -#ifdef G4DEBUG_NAVIGATION - if( fVerbose >= 2 ) + + if (keepState) { - G4cout << " G4Navigator::ComputeSafety() finds that point - " - << pGlobalpoint << " - is on surface " << G4endl; - if( fEnteredDaughter ) { G4cout << " entered new daughter volume"; } - if( fExitedMother ) { G4cout << " and exited previous volume."; } - G4cout << G4endl; - G4cout << " EndPoint was = " << fStepEndPoint << G4endl; - } -#endif - newSafety = 0.0; - } - - if (keepState) - { - RestoreSavedState(); - // This now overwrites the values of the Safety 'sphere' (correction) + RestoreSavedState(); + // This now overwrites the values of the Safety 'sphere' (correction) + } + + // Remember last safety origin & value + // + // We overwrite the Safety 'sphere' - keeping old behaviour + fPreviousSftOrigin = pGlobalpoint; + fPreviousSafety = newSafety; } - - // Remember last safety origin & value - // - // We overwrite the Safety 'sphere' - keeping old behaviour - fPreviousSftOrigin = pGlobalpoint; - fPreviousSafety = newSafety; - + #ifdef G4DEBUG_NAVIGATION if( fVerbose > 1 ) { @@ -1774,21 +1872,21 @@ G4TouchableHistoryHandle G4Navigator::CreateTouchableHistoryHandle() const void G4Navigator::PrintState() const { G4int oldcoutPrec = G4cout.precision(4); - if( fVerbose == 4 ) + if( fVerbose >= 4 ) { G4cout << "The current state of G4Navigator is: " << G4endl; - G4cout << " ValidExitNormal= " << fValidExitNormal << G4endl - << " ExitNormal = " << fExitNormal << G4endl - << " Exiting = " << fExiting << G4endl - << " Entering = " << fEntering << G4endl + G4cout << " ValidExitNormal= " << fValidExitNormal // << G4endl + << " ExitNormal = " << fExitNormal // << G4endl + << " Exiting = " << fExiting // << G4endl + << " Entering = " << fEntering // << G4endl << " BlockedPhysicalVolume= " ; if (fBlockedPhysicalVolume==0) G4cout << "None"; else G4cout << fBlockedPhysicalVolume->GetName(); G4cout << G4endl - << " BlockedReplicaNo = " << fBlockedReplicaNo << G4endl - << " LastStepWasZero = " << fLastStepWasZero << G4endl + << " BlockedReplicaNo = " << fBlockedReplicaNo // << G4endl + << " LastStepWasZero = " << fLastStepWasZero // << G4endl << G4endl; } if( ( 1 < fVerbose) && (fVerbose < 4) ) diff --git a/source/geometry/navigation/src/G4ReplicaNavigation.cc b/source/geometry/navigation/src/G4ReplicaNavigation.cc index b7fb84aae10..3758701700c 100644 --- a/source/geometry/navigation/src/G4ReplicaNavigation.cc +++ b/source/geometry/navigation/src/G4ReplicaNavigation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4ReplicaNavigation.cc 84727 2014-10-20 08:30:47Z gcosmo $ +// $Id: G4ReplicaNavigation.cc 88518 2015-02-25 13:22:30Z gcosmo $ // // // class G4ReplicaNavigation Implementation @@ -575,8 +575,8 @@ G4ReplicaNavigation::DistanceToOutRad(const G4ThreeVector &localPoint, // NOTE: Should use // rho-rmin>kRadTolerance*0.5 - [no sqrts for efficiency] // - srd = (deltaR>kRadTolerance*0.5) ? -b-std::sqrt(d2) : 0; - // Is the following more accurate ? - called 'issue' below + srd = (deltaR>kRadTolerance*0.5) ? -b-std::sqrt(d2) : 0.0; + // Is the following more accurate ? // srd = (deltaR>kRadTolerance*0.5) ? c/( -b - std::sqrt(d2)) : 0.0; sideR= G4ExitNormal::kRMin; } @@ -586,7 +586,8 @@ G4ReplicaNavigation::DistanceToOutRad(const G4ThreeVector &localPoint, // deltaR = t3-rmax*rmax; c = deltaR/t1; - srd = -b+std::sqrt(b*b-c); // See issue above + d2 = b*b-c; + srd = (d2 < 0.) ? 0.0 : -b+std::sqrt(d2); sideR= G4ExitNormal::kRMax; } } @@ -597,7 +598,8 @@ G4ReplicaNavigation::DistanceToOutRad(const G4ThreeVector &localPoint, deltaR = t3-rmax*rmax; b = t2/t1; c = deltaR/t1; - srd = -b+std::sqrt(b*b-c); // See issue above + d2 = b*b-c; + srd = (d2 < 0.) ? 0.0 : -b+std::sqrt(d2); sideR= G4ExitNormal::kRMax; } } diff --git a/source/geometry/solids/CSG/History b/source/geometry/solids/CSG/History index ccfa2542093..191989b0140 100644 --- a/source/geometry/solids/CSG/History +++ b/source/geometry/solids/CSG/History @@ -1,4 +1,4 @@ -$Id: History 84622 2014-10-17 09:43:17Z gcosmo $ +$Id: History 88512 2015-02-25 09:39:10Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,12 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +February 16, 2015 G.Cosmo geom-csg-V09-06-13 +- Fixed typo in copy-ctor and assignment operator for G4Tubs and G4OTubs. + +December 5, 2014 G.Cosmo +- Fix in temporary class G4OTubs to include symbol in library in any case. + September 4, 2014 T.Nikitina geom-csg-V09-06-12 - G4Cons: fixed typo error in GetPointOnSurface() in the call to GetRadiusInRing(). Responsible for occasionally wrong reports diff --git a/source/geometry/solids/CSG/src/G4OTubs.cc b/source/geometry/solids/CSG/src/G4OTubs.cc index 5a26157fcc1..a472e40ee44 100644 --- a/source/geometry/solids/CSG/src/G4OTubs.cc +++ b/source/geometry/solids/CSG/src/G4OTubs.cc @@ -35,8 +35,6 @@ #include "G4OTubs.hh" -#if !defined(G4GEOM_USE_UTUBS) - #include "G4VoxelLimits.hh" #include "G4AffineTransform.hh" #include "G4GeometryTolerance.hh" @@ -123,8 +121,8 @@ G4OTubs::G4OTubs(const G4OTubs& rhs) kRadTolerance(rhs.kRadTolerance), kAngTolerance(rhs.kAngTolerance), fRMin(rhs.fRMin), fRMax(rhs.fRMax), fDz(rhs.fDz), fSPhi(rhs.fSPhi), fDPhi(rhs.fDPhi), - sinCPhi(rhs.sinCPhi), cosCPhi(rhs.sinCPhi), - cosHDPhiOT(rhs.cosHDPhiOT), cosHDPhiIT(rhs.cosHDPhiOT), + sinCPhi(rhs.sinCPhi), cosCPhi(rhs.cosCPhi), + cosHDPhiOT(rhs.cosHDPhiOT), cosHDPhiIT(rhs.cosHDPhiIT), sinSPhi(rhs.sinSPhi), cosSPhi(rhs.cosSPhi), sinEPhi(rhs.sinEPhi), cosEPhi(rhs.cosEPhi), fPhiFullTube(rhs.fPhiFullTube), halfCarTolerance(rhs.halfCarTolerance), @@ -152,8 +150,8 @@ G4OTubs& G4OTubs::operator = (const G4OTubs& rhs) kRadTolerance = rhs.kRadTolerance; kAngTolerance = rhs.kAngTolerance; fRMin = rhs.fRMin; fRMax = rhs.fRMax; fDz = rhs.fDz; fSPhi = rhs.fSPhi; fDPhi = rhs.fDPhi; - sinCPhi = rhs.sinCPhi; cosCPhi = rhs.sinCPhi; - cosHDPhiOT = rhs.cosHDPhiOT; cosHDPhiIT = rhs.cosHDPhiOT; + sinCPhi = rhs.sinCPhi; cosCPhi = rhs.cosCPhi; + cosHDPhiOT = rhs.cosHDPhiOT; cosHDPhiIT = rhs.cosHDPhiIT; sinSPhi = rhs.sinSPhi; cosSPhi = rhs.cosSPhi; sinEPhi = rhs.sinEPhi; cosEPhi = rhs.cosEPhi; fPhiFullTube = rhs.fPhiFullTube; @@ -1883,4 +1881,3 @@ G4Polyhedron* G4OTubs::CreatePolyhedron () const { return new G4PolyhedronTubs (fRMin, fRMax, fDz, fSPhi, fDPhi) ; } -#endif diff --git a/source/geometry/solids/CSG/src/G4Tubs.cc b/source/geometry/solids/CSG/src/G4Tubs.cc index bd827a094c2..8ca6f936f58 100644 --- a/source/geometry/solids/CSG/src/G4Tubs.cc +++ b/source/geometry/solids/CSG/src/G4Tubs.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4Tubs.cc 84622 2014-10-17 09:43:17Z gcosmo $ +// $Id: G4Tubs.cc 88512 2015-02-25 09:39:10Z gcosmo $ // // // class G4Tubs @@ -148,8 +148,8 @@ G4Tubs::G4Tubs(const G4Tubs& rhs) kRadTolerance(rhs.kRadTolerance), kAngTolerance(rhs.kAngTolerance), fRMin(rhs.fRMin), fRMax(rhs.fRMax), fDz(rhs.fDz), fSPhi(rhs.fSPhi), fDPhi(rhs.fDPhi), - sinCPhi(rhs.sinCPhi), cosCPhi(rhs.sinCPhi), - cosHDPhiOT(rhs.cosHDPhiOT), cosHDPhiIT(rhs.cosHDPhiOT), + sinCPhi(rhs.sinCPhi), cosCPhi(rhs.cosCPhi), + cosHDPhiOT(rhs.cosHDPhiOT), cosHDPhiIT(rhs.cosHDPhiIT), sinSPhi(rhs.sinSPhi), cosSPhi(rhs.cosSPhi), sinEPhi(rhs.sinEPhi), cosEPhi(rhs.cosEPhi), fPhiFullTube(rhs.fPhiFullTube), halfCarTolerance(rhs.halfCarTolerance), @@ -177,8 +177,8 @@ G4Tubs& G4Tubs::operator = (const G4Tubs& rhs) kRadTolerance = rhs.kRadTolerance; kAngTolerance = rhs.kAngTolerance; fRMin = rhs.fRMin; fRMax = rhs.fRMax; fDz = rhs.fDz; fSPhi = rhs.fSPhi; fDPhi = rhs.fDPhi; - sinCPhi = rhs.sinCPhi; cosCPhi = rhs.sinCPhi; - cosHDPhiOT = rhs.cosHDPhiOT; cosHDPhiIT = rhs.cosHDPhiOT; + sinCPhi = rhs.sinCPhi; cosCPhi = rhs.cosCPhi; + cosHDPhiOT = rhs.cosHDPhiOT; cosHDPhiIT = rhs.cosHDPhiIT; sinSPhi = rhs.sinSPhi; cosSPhi = rhs.cosSPhi; sinEPhi = rhs.sinEPhi; cosEPhi = rhs.cosEPhi; fPhiFullTube = rhs.fPhiFullTube; diff --git a/source/geometry/solids/specific/History b/source/geometry/solids/specific/History index acc2d63c383..0dd99e9fd28 100644 --- a/source/geometry/solids/specific/History +++ b/source/geometry/solids/specific/History @@ -1,4 +1,4 @@ -$Id: History 84624 2014-10-17 09:56:00Z gcosmo $ +$Id: History 88514 2015-02-25 09:59:10Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,28 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +23-Feb-2015 T.Nikitina (geom-specific-V09-06-41) +- Fix in SetOriginalParameters() for G4Polycone and G4Polyhedra, in case + of presence of 'rings' structures. Addressing problem report #1705. + +26-Jan-2015 G.Cosmo +- Renamed DistanceAwayForInside() to DistanceAway() and use polymorphism. + +26-Jan-2015 T.Nikitina +- Added special method for Inside 'DistanceAwayForInside()' in order to fix + precision problem of calculation of DistanceToSide() in G4PolyconeSide. + +21-Jan-2015 T.Nikitina +- Fixed triangularisation method AddGeneralPOlygoneFacets() in + G4ExtrudedSolid by avoiding flat triangles. +- Added warning message to G4TriangularFacet constructor if Area is 0; + i.e., case of flat triangle. +- Addressing problem report #1703. + +12-Dec-2014 G.Cosmo +- Use canonical form for operator=() in G4PolyconeHistorical and + G4PolyhedraHistorical. + 01-Sep-2014 G.Cosmo (geom-specific-V09-06-40) - Fixed use of polyhedron pointer, to avoid race condition in MT when parameterised volumes are visualised. diff --git a/source/geometry/solids/specific/include/G4PolyconeSide.hh b/source/geometry/solids/specific/include/G4PolyconeSide.hh index dd5f80ad2e2..bee377bd4cd 100644 --- a/source/geometry/solids/specific/include/G4PolyconeSide.hh +++ b/source/geometry/solids/specific/include/G4PolyconeSide.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4PolyconeSide.hh 67973 2013-03-13 10:16:25Z gcosmo $ +// $Id: G4PolyconeSide.hh 88514 2015-02-25 09:59:10Z gcosmo $ // // // -------------------------------------------------------------------- @@ -156,6 +156,9 @@ class G4PolyconeSide : public G4VCSGface G4double DistanceAway( const G4ThreeVector &p, G4bool opposite, G4double &distOutside2, G4double *rzNorm=0 ); + G4double DistanceAway( const G4ThreeVector &p, + G4double &distOutside2, G4double *edgeRZnorm ); + G4bool PointOnCone( const G4ThreeVector &hit, G4double normSign, const G4ThreeVector &p, const G4ThreeVector &v, G4ThreeVector &normal ); diff --git a/source/geometry/solids/specific/src/G4ExtrudedSolid.cc b/source/geometry/solids/specific/src/G4ExtrudedSolid.cc index 707a8e9f4a7..3a90c3ed4f3 100644 --- a/source/geometry/solids/specific/src/G4ExtrudedSolid.cc +++ b/source/geometry/solids/specific/src/G4ExtrudedSolid.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4ExtrudedSolid.cc 69584 2013-05-08 14:12:37Z gcosmo $ +// $Id: G4ExtrudedSolid.cc 88514 2015-02-25 09:59:10Z gcosmo $ // // // -------------------------------------------------------------------- @@ -549,16 +549,20 @@ G4bool G4ExtrudedSolid::AddGeneralPolygonFacets() { // G4cout << "Looking at triangle : " - // << c1->second << " " << c2->second + // << c1->second << " " << c2->second // << " " << c3->second << G4endl; + //G4cout << "Looking at triangle : " + // << c1->first << " " << c2->first + // << " " << c3->first << G4endl; // skip concave vertices // G4double angle = GetAngle(c2->first, c3->first, c1->first); + //G4cout << "angle " << angle << G4endl; G4int counter = 0; - while ( angle > pi ) + while ( angle >= pi ) { // G4cout << "Skipping concave vertex " << c2->second << G4endl; @@ -569,9 +573,9 @@ G4bool G4ExtrudedSolid::AddGeneralPolygonFacets() ++c3; if ( c3 == verticesToBeDone.end() ) { c3 = verticesToBeDone.begin(); } - // G4cout << "Looking at triangle : " - // << c1->second << " " << c2->second - // << " " << c3->second << G4endl; + //G4cout << "Looking at triangle : " + // << c1->first << " " << c2->first + // << " " << c3->first << G4endl; angle = GetAngle(c2->first, c3->first, c1->first); //G4cout << "angle " << angle << G4endl; diff --git a/source/geometry/solids/specific/src/G4Polycone.cc b/source/geometry/solids/specific/src/G4Polycone.cc index cc09c3605eb..a87f32e3d15 100644 --- a/source/geometry/solids/specific/src/G4Polycone.cc +++ b/source/geometry/solids/specific/src/G4Polycone.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4Polycone.cc 84624 2014-10-17 09:56:00Z gcosmo $ +// $Id: G4Polycone.cc 88514 2015-02-25 09:59:10Z gcosmo $ // // // -------------------------------------------------------------------- @@ -959,7 +959,7 @@ G4bool G4Polycone::SetOriginalParameters(G4ReduciblePolygon *rz) G4double Zleft = corners[inextl].z; G4double Zright = corners[inextr].z; - if(Zright>Zleft) + if(Zright > Zleft) // Next plane will be Zleft { Z.push_back(Zleft); countPlanes++; @@ -968,23 +968,31 @@ G4bool G4Polycone::SetOriginalParameters(G4ReduciblePolygon *rz) if(std::fabs(difZl) < kCarTolerance) { - if(corners[inextl].r >= corners[icurl].r) - { - Rmin.push_back(corners[icurl].r); - Rmax.push_back(Rmax[countPlanes-2]); - Rmax[countPlanes-2]=corners[icurl].r; + if(std::fabs(difZr) < kCarTolerance) + { + Rmin.push_back(corners[inextl].r); + Rmax.push_back(corners[icurr].r); } else { Rmin.push_back(corners[inextl].r); - Rmax.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); } } else if (difZl >= kCarTolerance) { - Rmin.push_back(corners[inextl].r); - Rmax.push_back (corners[icurr].r + (Zleft-corners[icurr].z)/difZr - *(corners[inextr].r - corners[icurr].r)); + if(std::fabs(difZr) < kCarTolerance) + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r); + } + else + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); + } } else { @@ -1001,7 +1009,7 @@ G4bool G4Polycone::SetOriginalParameters(G4ReduciblePolygon *rz) icurl=(icurl == 0)? numPlanes-1 : icurl-1; Rmin.push_back(corners[inextl].r); - Rmax.push_back (corners[inextr].r); + Rmax.push_back(corners[inextr].r); } else // Zright= corners[icurr].r) - { - Rmin.push_back(corners[icurr].r); + if(std::fabs(difZl) < kCarTolerance) + { Rmax.push_back(corners[inextr].r); - } + Rmin.push_back(corners[icurr].r); + } else { - Rmin.push_back(corners[inextr].r); - Rmax.push_back(corners[icurr].r); - Rmax[countPlanes-2]=corners[inextr].r; + Rmin.push_back(corners[icurl].r + (Zright-corners[icurl].z)/difZl + *(corners[inextl].r - corners[icurl].r)); + Rmax.push_back(corners[inextr].r); } icurr++; } // plate else if (difZr >= kCarTolerance) { - if(std::fabs(difZl) G4ThreadLocal // G4PlSideManager G4PolyconeSide::subInstanceManager; + // Returns the private data instance manager. // const G4PlSideManager& G4PolyconeSide::GetSubInstanceManager() @@ -65,6 +66,7 @@ const G4PlSideManager& G4PolyconeSide::GetSubInstanceManager() return subInstanceManager; } + // // Constructor // @@ -408,6 +410,9 @@ G4bool G4PolyconeSide::Intersect( const G4ThreeVector &p, } +// +// Distance +// G4double G4PolyconeSide::Distance( const G4ThreeVector &p, G4bool outgoing ) { G4double normSign = outgoing ? -1 : +1; @@ -452,32 +457,20 @@ EInside G4PolyconeSide::Inside( const G4ThreeVector &p, G4double tolerance, G4double *bestDistance ) { - // - // Check both sides - // - G4double distFrom[2], distOut2[2], dist2[2]; - G4double edgeRZnorm[2]; + G4double distFrom, distOut2, dist2; + G4double edgeRZnorm; - distFrom[0] = DistanceAway( p, false, distOut2[0], edgeRZnorm ); - distFrom[1] = DistanceAway( p, true, distOut2[1], edgeRZnorm+1 ); - - dist2[0] = distFrom[0]*distFrom[0] + distOut2[0]; - dist2[1] = distFrom[1]*distFrom[1] + distOut2[1]; - - // - // Who's closest? - // - G4int i = std::fabs(dist2[0]) < std::fabs(dist2[1]) ? 0 : 1; - - *bestDistance = std::sqrt( dist2[i] ); + distFrom = DistanceAway( p, distOut2, &edgeRZnorm ); + dist2 = distFrom*distFrom + distOut2; + + *bestDistance = std::sqrt( dist2); - // // Okay then, inside or out? // - if ( (std::fabs(edgeRZnorm[i]) < tolerance) - && (distOut2[i] < tolerance*tolerance) ) + if ( (std::fabs(edgeRZnorm) < tolerance) + && (distOut2< tolerance*tolerance) ) return kSurface; - else if (edgeRZnorm[i] < 0) + else if (edgeRZnorm < 0) return kInside; else return kOutside; @@ -565,7 +558,6 @@ G4double G4PolyconeSide::Extent( const G4ThreeVector axis ) } - // // CalculateExtent // @@ -883,6 +875,7 @@ void G4PolyconeSide::CalculateExtent( const EAxis axis, return; } + // // GetPhi // @@ -907,6 +900,7 @@ G4double G4PolyconeSide::GetPhi( const G4ThreeVector& p ) return val; } + // // DistanceAway // @@ -1007,6 +1001,97 @@ G4double G4PolyconeSide::DistanceAway( const G4ThreeVector &p, } +// +// DistanceAway +// +// Special version of DistanceAway for Inside. +// Opposite parameter is not used, instead use sign of rx for choosing the side +// +G4double G4PolyconeSide::DistanceAway( const G4ThreeVector &p, + G4double &distOutside2, + G4double *edgeRZnorm ) +{ + // + // Convert our point to r and z + // + G4double rx = p.perp(), zx = p.z(); + + // + // Change sign of r if we should + // + G4int part = 1; + if (rx < 0) part = -1; + + // + // Calculate return value + // + G4double deltaR = rx - r[0]*part, deltaZ = zx - z[0]; + G4double answer = deltaR*rNorm*part + deltaZ*zNorm; + + // + // Are we off the surface in r,z space? + // + G4double q = deltaR*rS*part + deltaZ*zS; + if (q < 0) + { + distOutside2 = q*q; + if (edgeRZnorm) + { + *edgeRZnorm = deltaR*rNormEdge[0]*part + deltaZ*zNormEdge[0]; + } + } + else if (q > length) + { + distOutside2 = sqr( q-length ); + if (edgeRZnorm) + { + deltaR = rx - r[1]*part; + deltaZ = zx - z[1]; + *edgeRZnorm = deltaR*rNormEdge[1]*part + deltaZ*zNormEdge[1]; + } + } + else + { + distOutside2 = 0; + if (edgeRZnorm) *edgeRZnorm = answer; + } + + if (phiIsOpen) + { + // + // Finally, check phi + // + G4double phi = GetPhi(p); + while( phi < startPhi ) phi += twopi; + + if (phi > startPhi+deltaPhi) + { + // + // Oops. Are we closer to the start phi or end phi? + // + G4double d1 = phi-startPhi-deltaPhi; + while( phi > startPhi ) phi -= twopi; + G4double d2 = startPhi-phi; + + if (d2 < d1) d1 = d2; + + // + // Add result to our distance + // + G4double dist = d1*rx*part; + + distOutside2 += dist*dist; + if (edgeRZnorm) + { + *edgeRZnorm = std::max(std::fabs(*edgeRZnorm),std::fabs(dist)); + } + } + } + + return answer; +} + + // // PointOnCone // @@ -1103,6 +1188,7 @@ void G4PolyconeSide::FindLineIntersect( G4double x1, G4double y1, y = 0.5*( y1+s1*ty1 + y2+s2*ty2 ); } + // // Calculate surface area for GetPointOnSurface() // @@ -1116,6 +1202,7 @@ G4double G4PolyconeSide::SurfaceArea() return fSurfaceArea; } + // // GetPointOnFace // diff --git a/source/geometry/solids/specific/src/G4Polyhedra.cc b/source/geometry/solids/specific/src/G4Polyhedra.cc index 99a3287331a..6dd3dbbe572 100644 --- a/source/geometry/solids/specific/src/G4Polyhedra.cc +++ b/source/geometry/solids/specific/src/G4Polyhedra.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4Polyhedra.cc 84624 2014-10-17 09:56:00Z gcosmo $ +// $Id: G4Polyhedra.cc 88514 2015-02-25 09:59:10Z gcosmo $ // // // -------------------------------------------------------------------- @@ -603,7 +603,8 @@ std::ostream& G4Polyhedra::StreamInfo( std::ostream& os ) const << " Solid type: G4Polyhedra\n" << " Parameters: \n" << " starting phi angle : " << startPhi/degree << " degrees \n" - << " ending phi angle : " << endPhi/degree << " degrees \n"; + << " ending phi angle : " << endPhi/degree << " degrees \n" + << " number of sides : " << numSide << " \n"; G4int i=0; if (!genericPgon) { @@ -1228,23 +1229,31 @@ void G4Polyhedra::SetOriginalParameters(G4ReduciblePolygon *rz) if(std::fabs(difZl) < kCarTolerance) { - if(corners[inextl].r >= corners[icurl].r) - { - Rmin.push_back(corners[icurl].r); - Rmax.push_back(Rmax[countPlanes-2]); - Rmax[countPlanes-2]=corners[icurl].r; + if(std::fabs(difZr) < kCarTolerance) + { + Rmin.push_back(corners[inextl].r); + Rmax.push_back(corners[icurr].r); } else { Rmin.push_back(corners[inextl].r); - Rmax.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); } } else if (difZl >= kCarTolerance) { - Rmin.push_back(corners[inextl].r); - Rmax.push_back (corners[icurr].r + (Zleft-corners[icurr].z)/difZr - *(corners[inextr].r - corners[icurr].r)); + if(std::fabs(difZr) < kCarTolerance) + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r); + } + else + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); + } } else { @@ -1272,22 +1281,22 @@ void G4Polyhedra::SetOriginalParameters(G4ReduciblePolygon *rz) G4double difZl=corners[inextl].z - corners[icurl].z; if(std::fabs(difZr) < kCarTolerance) { - if(corners[inextr].r >= corners[icurr].r) - { - Rmin.push_back(corners[icurr].r); + if(std::fabs(difZl) < kCarTolerance) + { Rmax.push_back(corners[inextr].r); - } + Rmin.push_back(corners[icurr].r); + } else { - Rmin.push_back(corners[inextr].r); - Rmax.push_back(corners[icurr].r); - Rmax[countPlanes-2]=corners[inextr].r; + Rmin.push_back(corners[icurl].r + (Zright-corners[icurl].z)/difZl + * (corners[inextl].r - corners[icurl].r)); + Rmax.push_back(corners[inextr].r); } icurr++; } // plate else if (difZr >= kCarTolerance) { - if(std::fabs(difZl) 0.5*kCarTolerance); + if (wrongSide) { distance = kInfinity; diff --git a/source/geometry/solids/usolids/History b/source/geometry/solids/usolids/History index 62c17aaf1d3..614b30be8b9 100644 --- a/source/geometry/solids/usolids/History +++ b/source/geometry/solids/usolids/History @@ -17,6 +17,54 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +February 23, 2015 T.Nikitina geom-usolids-V09-06-17 +- Fix in SetOriginalParameters() for UPolycone, in case of presence of + 'rings' structures constructed by (r,z) corners. + +February 16, 2015 G.Cosmo +- Fixed typo in copy-ctor and assignment operator for UTubs. + +January 26, 2015 G.Cosmo +- Renamed DistanceAwayForInside() to DistanceAway() and use polymorphism + in UPolyconeSide. + +January 26, 2015 T.Nikitina +- Added special method for Inside 'DistanceAwayForInside()' in order to fix + precision problem of calculation of DistanceToSide() in UPolyconeSide. + +December 17, 2014 G.Cosmo +- Renamed ExceptionSeverity struct to UExceptionSeverity in UUtils. + +December 12, 2014 G.Cosmo +- Use canonical form for operator=() in UPolycone. + +December 10, 2014 T.Nikitina +- Fix in UPolycone::InsideSection() for points(0,0,z). + Code cleanup and formatting + +December 02, 2014 T.Nikitina +- Fixes in UPolycone: + InsideSection() for openPhi when StartPhi is negative, + Init() for Polycone defined from ZPlane[0]>ZPlane[N], + DistanceToOut() for points starting on internal surface. + +November 27, 2014 G.Cosmo +- Removed 'inline' specification for pure virtual function StreamInfo() + in VUSolid base class. + +November 27, 2014 G.Cosmo +- Fixed implementation of StreamInfo() for G4USolid. + +November 10, 2014 T.Nikitina +- UPolyhedra: moved Extent() from protected to public. +- UPolycone: correction in Capacity() for iteration over the number of + sections and in SurfaceArea() for the case opening-angle is less than 2*pi. +- UTet: fixed approximation in Extent(). + +November 6, 2014 T.Nikitina +- Minor fixes of errors reported by Coverity and unit tests in + UTubs, UCons, UTet. + September 18, 2014 T.Nikitina geom-usolids-V09-06-16 - Fixed typo error in USphere::SafetyFromInside(). diff --git a/source/geometry/solids/usolids/include/UCons.hh b/source/geometry/solids/usolids/include/UCons.hh index e8095f7c4ba..f077148acd5 100644 --- a/source/geometry/solids/usolids/include/UCons.hh +++ b/source/geometry/solids/usolids/include/UCons.hh @@ -1,215 +1,211 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UCons -// -// Class description: -// -// A UCons is, in the general case, a Phi segment of a cone, with -// half-length fDz, inner and outer radii specified at -fDz and +fDz. -// The Phi segment is described by a starting fSPhi angle, and the -// +fDPhi delta angle for the shape. -// If the delta angle is >=2*UUtils::kPi, the shape is treated as -// continuous in Phi -// -// Member Data: -// -// fRmin1 inside radius at -fDz -// fRmin2 inside radius at +fDz -// fRmax1 outside radius at -fDz -// fRmax2 outside radius at +fDz -// fDz half length in z -// -// fSPhi starting angle of the segment in radians -// fDPhi delta angle of the segment in radians -// -// fPhiFullCone Boolean variable used for indicate the Phi Section -// -// Note: -// Internally fSPhi & fDPhi are adjusted so that fDPhi<=2PI, -// and fDPhi+fSPhi<=2PI. This enables simpler comparisons to be -// made with (say) Phi of a point. -// -// 19.10.12 Marek Gayer -// Created from original implementation in Geant4 -// -------------------------------------------------------------------- - -#ifndef UCons_HH -#define UCons_HH - -#include "VUSolid.hh" - -class UCons : public VUSolid -{ - public: // with description - - UCons(const std::string& pName, - double pRmin1, double pRmax1, - double pRmin2, double pRmax2, - double pDz, - double pSPhi, double pDPhi); - // - // Constructs a cone with the given name and dimensions - - ~UCons() ; - // - // Destructor - - // Accessors - - inline double GetInnerRadiusMinusZ() const; - inline double GetOuterRadiusMinusZ() const; - inline double GetInnerRadiusPlusZ() const; - inline double GetOuterRadiusPlusZ() const; - inline double GetZHalfLength() const; - inline double GetStartPhiAngle() const; - inline double GetDeltaPhiAngle() const; - - // Modifiers - - inline void SetInnerRadiusMinusZ(double Rmin1); - inline void SetOuterRadiusMinusZ(double Rmax1); - inline void SetInnerRadiusPlusZ(double Rmin2); - inline void SetOuterRadiusPlusZ(double Rmax2); - inline void SetZHalfLength(double newDz); - inline void SetStartPhiAngle(double newSPhi, bool trig = true); - inline void SetDeltaPhiAngle(double newDPhi); - - // Other methods for solid - - inline double GetCubicVolume(); - inline double GetSurfaceArea(); - - -// inline VUSolid::EnumInside Inside( const UVector3& p ) const; - - bool Normal(const UVector3& p, UVector3& n) const; - - double DistanceToIn(const UVector3& p, const UVector3& v, double aPstep = UUtils::kInfinity) const; - - double SafetyFromOutside(const UVector3& p, bool precise) const; - - - - double DistanceToOut(const UVector3& aPoint, - const UVector3& aDirection, - UVector3& aNormalVector, - bool& aConvex, - double aPstep = UUtils::kInfinity) const; - - double SafetyFromInside(const UVector3& p, bool precise) const; - - UGeometryType GetEntityType() const; - - UVector3 GetPointOnSurface() const; - - VUSolid* Clone() const; - - std::ostream& StreamInfo(std::ostream& os) const; - -// void Extent (EAxisType aAxis, double &aMin, double &aMax) const; - void Extent(UVector3& aMin, UVector3& aMax) const; - - virtual void GetParametersList(int /*aNumber*/, double* /*aArray*/) const; - - virtual void ComputeBBox(UBBox* /*aBox*/, bool /*aStore = false*/) {} - - // Safety used for UPolycone - - inline double SafetyToPhi(const UVector3& p, - const double rho, bool& outside) const; - inline double SafetyFromInsideR(const UVector3& p, - const double rho,bool) const; - inline double SafetyFromOutsideR(const UVector3& p, - const double rho,bool) const; - - inline VUSolid::EnumInside Inside(const UVector3& p) const; - - public: // without description - - UCons(); - // - // Fake default constructor for usage restricted to direct object - // persistency for clients requiring preallocation of memory for - // persistifiable objects. - - UCons(const UCons& rhs); - UCons& operator=(const UCons& rhs); - // Copy constructor and assignment operator. - - // Old access functions - - inline double GetRmin1() const; - inline double GetRmax1() const; - inline double GetRmin2() const; - inline double GetRmax2() const; - inline double GetDz() const; - inline double GetSPhi() const; - inline double GetDPhi() const; - - private: - - double fCubicVolume, fSurfaceArea; - - inline double Capacity(); - inline double SurfaceArea(); - - inline void Initialize(); - // - // Reset relevant values to zero - - inline void CheckSPhiAngle(double sPhi); - inline void CheckDPhiAngle(double dPhi); - inline void CheckPhiAngles(double sPhi, double dPhi); - // - // Reset relevant flags and angle values - - inline void InitializeTrigonometry(); - // - // Recompute relevant trigonometric values and cache them - - UVector3 ApproxSurfaceNormal(const UVector3& p) const; - // - // Algorithm for SurfaceNormal() following the original - // specification for points not on the surface - - private: - - // Used by distanceToOut - // - enum ESide {kNull, kRMin, kRMax, kSPhi, kEPhi, kPZ, kMZ}; - - // used by normal - // - enum ENorm {kNRMin, kNRMax, kNSPhi, kNEPhi, kNZ}; - - double kRadTolerance, kAngTolerance; - // - // Radial and angular tolerances - - double fRmin1, fRmin2, fRmax1, fRmax2, fDz, fSPhi, fDPhi; - // - // Radial and angular dimensions - - double sinCPhi, cosCPhi, cosHDPhiOT, cosHDPhiIT, - sinSPhi, cosSPhi, sinEPhi, cosEPhi; - // - // Cached trigonometric values - - bool fPhiFullCone; - // - // Flag for identification of section or full cone - - double secRMin, tanRMin, tanRMax, secRMax; -}; - -#include "UCons.icc" - -#endif +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UCons +// +// Class description: +// +// A UCons is, in the general case, a Phi segment of a cone, with +// half-length fDz, inner and outer radii specified at -fDz and +fDz. +// The Phi segment is described by a starting fSPhi angle, and the +// +fDPhi delta angle for the shape. +// If the delta angle is >=2*UUtils::kPi, the shape is treated as +// continuous in Phi +// +// Member Data: +// +// fRmin1 inside radius at -fDz +// fRmin2 inside radius at +fDz +// fRmax1 outside radius at -fDz +// fRmax2 outside radius at +fDz +// fDz half length in z +// +// fSPhi starting angle of the segment in radians +// fDPhi delta angle of the segment in radians +// +// fPhiFullCone Boolean variable used for indicate the Phi Section +// +// Note: +// Internally fSPhi & fDPhi are adjusted so that fDPhi<=2PI, +// and fDPhi+fSPhi<=2PI. This enables simpler comparisons to be +// made with (say) Phi of a point. +// +// 19.10.12 Marek Gayer +// Created from original implementation in Geant4 +// -------------------------------------------------------------------- + +#ifndef UCons_HH +#define UCons_HH + +#include "VUSolid.hh" + +class UCons : public VUSolid +{ + public: // with description + + UCons(const std::string& pName, + double pRmin1, double pRmax1, + double pRmin2, double pRmax2, + double pDz, + double pSPhi, double pDPhi); + // + // Constructs a cone with the given name and dimensions + + ~UCons() ; + // + // Destructor + + // Accessors + + inline double GetInnerRadiusMinusZ() const; + inline double GetOuterRadiusMinusZ() const; + inline double GetInnerRadiusPlusZ() const; + inline double GetOuterRadiusPlusZ() const; + inline double GetZHalfLength() const; + inline double GetStartPhiAngle() const; + inline double GetDeltaPhiAngle() const; + + // Modifiers + + inline void SetInnerRadiusMinusZ(double Rmin1); + inline void SetOuterRadiusMinusZ(double Rmax1); + inline void SetInnerRadiusPlusZ(double Rmin2); + inline void SetOuterRadiusPlusZ(double Rmax2); + inline void SetZHalfLength(double newDz); + inline void SetStartPhiAngle(double newSPhi, bool trig = true); + inline void SetDeltaPhiAngle(double newDPhi); + + // Other methods for solid + + inline double Capacity(); + inline double SurfaceArea(); + + // inline VUSolid::EnumInside Inside( const UVector3& p ) const; + + bool Normal(const UVector3& p, UVector3& n) const; + + double DistanceToIn(const UVector3& p, const UVector3& v, double aPstep = UUtils::kInfinity) const; + + double SafetyFromOutside(const UVector3& p, bool precise = false) const; + + + + double DistanceToOut(const UVector3& aPoint, + const UVector3& aDirection, + UVector3& aNormalVector, + bool& aConvex, + double aPstep = UUtils::kInfinity) const; + + double SafetyFromInside(const UVector3& p, bool precise = false) const; + + UGeometryType GetEntityType() const; + + UVector3 GetPointOnSurface() const; + + VUSolid* Clone() const; + + std::ostream& StreamInfo(std::ostream& os) const; + +// void Extent (EAxisType aAxis, double &aMin, double &aMax) const; + void Extent(UVector3& aMin, UVector3& aMax) const; + + virtual void GetParametersList(int /*aNumber*/, double* /*aArray*/) const; + + virtual void ComputeBBox(UBBox* /*aBox*/, bool /*aStore = false*/) {} + + // Safety used for UPolycone + + inline double SafetyToPhi(const UVector3& p, + const double rho, bool& outside) const; + inline double SafetyFromInsideR(const UVector3& p, + const double rho,bool) const; + inline double SafetyFromOutsideR(const UVector3& p, + const double rho,bool) const; + + inline VUSolid::EnumInside Inside(const UVector3& p) const; + + public: // without description + + UCons(); + // + // Fake default constructor for usage restricted to direct object + // persistency for clients requiring preallocation of memory for + // persistifiable objects. + + UCons(const UCons& rhs); + UCons& operator=(const UCons& rhs); + // Copy constructor and assignment operator. + + // Old access functions + + inline double GetRmin1() const; + inline double GetRmax1() const; + inline double GetRmin2() const; + inline double GetRmax2() const; + inline double GetDz() const; + inline double GetSPhi() const; + inline double GetDPhi() const; + + private: + + double fCubicVolume, fSurfaceArea; + + inline void Initialize(); + // + // Reset relevant values to zero + + inline void CheckSPhiAngle(double sPhi); + inline void CheckDPhiAngle(double dPhi); + inline void CheckPhiAngles(double sPhi, double dPhi); + // + // Reset relevant flags and angle values + + inline void InitializeTrigonometry(); + // + // Recompute relevant trigonometric values and cache them + + UVector3 ApproxSurfaceNormal(const UVector3& p) const; + // + // Algorithm for SurfaceNormal() following the original + // specification for points not on the surface + + private: + + // Used by distanceToOut + // + enum ESide {kNull, kRMin, kRMax, kSPhi, kEPhi, kPZ, kMZ}; + + // used by normal + // + enum ENorm {kNRMin, kNRMax, kNSPhi, kNEPhi, kNZ}; + + double kRadTolerance, kAngTolerance; + // + // Radial and angular tolerances + + double fRmin1, fRmin2, fRmax1, fRmax2, fDz, fSPhi, fDPhi; + // + // Radial and angular dimensions + + double sinCPhi, cosCPhi, cosHDPhiOT, cosHDPhiIT, + sinSPhi, cosSPhi, sinEPhi, cosEPhi; + // + // Cached trigonometric values + + bool fPhiFullCone; + // + // Flag for identification of section or full cone + + double secRMin, tanRMin, tanRMax, secRMax; +}; + +#include "UCons.icc" + +#endif diff --git a/source/geometry/solids/usolids/include/UPolyconeSide.hh b/source/geometry/solids/usolids/include/UPolyconeSide.hh index 6fb6bfb8ad2..dd3b614f3d8 100644 --- a/source/geometry/solids/usolids/include/UPolyconeSide.hh +++ b/source/geometry/solids/usolids/include/UPolyconeSide.hh @@ -109,6 +109,9 @@ class UPolyconeSide : public UVCSGface double DistanceAway(const UVector3& p, bool opposite, double& distOutside2, double* rzNorm = 0); + double DistanceAway(const UVector3& p, + double& distOutside2, double* edgeRZnorm); + bool PointOnCone(const UVector3& hit, double normSign, const UVector3& p, const UVector3& v, UVector3& normal); diff --git a/source/geometry/solids/usolids/include/UPolyhedra.hh b/source/geometry/solids/usolids/include/UPolyhedra.hh index 867ddf223ea..7500fe0151f 100644 --- a/source/geometry/solids/usolids/include/UPolyhedra.hh +++ b/source/geometry/solids/usolids/include/UPolyhedra.hh @@ -1,194 +1,195 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UPolyhedra -// -// Class description: -// -// Class implementing a CSG-like type "PGON": -// -// UPolyhedra( const std::string& name, -// double phiStart, - initial phi starting angle -// double phiTotal, - total phi angle -// int numSide, - number sides -// int numZPlanes, - number of z planes -// const double zPlane[], - position of z planes -// const double rInner[], - tangent distance to inner surface -// const double rOuter[] ) - tangent distance to outer surface -// -// UPolyhedra( const std::string& name, -// double phiStart, - initial phi starting angle -// double phiTotal, - total phi angle -// int numSide, - number sides -// int numRZ, - number corners in r,z space -// const double r[], - r coordinate of these corners -// const double z[] ) - z coordinate of these corners -// -// 19.09.13 Marek Gayer -// Created from original implementation in Geant4 -// -------------------------------------------------------------------- - -#ifndef UPolyhedra_hh -#define UPolyhedra_hh - -#include "UVCSGfaceted.hh" -#include "UPolyhedraSide.hh" - -class UEnclosingCylinder; -class UReduciblePolygon; -class UPolyhedraHistorical -{ - public: - - UPolyhedraHistorical(); - ~UPolyhedraHistorical(); - UPolyhedraHistorical(const UPolyhedraHistorical& source); - UPolyhedraHistorical& operator=(const UPolyhedraHistorical& right); - - double fStartAngle; - double fOpeningAngle; - int fNumSide; - int fNumZPlanes; - std::vector fZValues; - std::vector Rmin; - std::vector Rmax; -}; - -class UPolyhedra : public UVCSGfaceted -{ - protected: - - inline UPolyhedra(const std::string& name) : UVCSGfaceted(name) {} - - public: // with description - - void Init( - double phiStart, // initial phi starting angle - double phiTotal, // total phi angle - int numSide, // number sides - int numZPlanes, // number of z planes - const double zPlane[], // position of z planes - const double rInner[], // tangent distance to inner surface - const double rOuter[]); // tangent distance to outer surface - - UPolyhedra(const std::string& name, - double phiStart, // initial phi starting angle - double phiTotal, // total phi angle - int numSide, // number sides - int numZPlanes, // number of z planes - const double zPlane[], // position of z planes - const double rInner[], // tangent distance to inner surface - const double rOuter[]); // tangent distance to outer surface - - UPolyhedra(const std::string& name, - double phiStart, // initial phi starting angle - double phiTotal, // total phi angle - int numSide, // number sides - int numRZ, // number corners in r,z space - const double r[], // r coordinate of these corners - const double z[]); // z coordinate of these corners - - virtual ~UPolyhedra(); - - // Methods for solid - - void GetParametersList(int /*aNumber*/, double* /*aArray*/) const {} - - void ComputeBBox(UBBox* /*aBox*/, bool /*aStore*/) - { - // Computes bounding box. - std::cout << "ComputeBBox - Not implemented" << std::endl; - } - - VUSolid::EnumInside Inside(const UVector3& p) const; - - // double DistanceToInDelete( const UVector3 &p, - // const UVector3 &v ) const; - - double SafetyFromOutside(const UVector3& aPoint, bool aAccurate = false) const; - - UGeometryType GetEntityType() const; - - VUSolid* Clone() const; - - UVector3 GetPointOnSurface() const; - - std::ostream& StreamInfo(std::ostream& os) const; - - bool Reset(); - - // Accessors - - inline int GetNumSide() const; - inline double GetStartPhi() const; - inline double GetEndPhi() const; - inline bool IsOpen() const; - inline bool IsGeneric() const; - inline int GetNumRZCorner() const; - inline UPolyhedraSideRZ GetCorner(const int index) const; - - inline UPolyhedraHistorical* GetOriginalParameters(); - // Returns internal scaled parameters. - inline void SetOriginalParameters(UPolyhedraHistorical& pars); - // Sets internal parameters. Parameters 'Rmin' and 'Rmax' in input must - // be scaled first by a factor computed as 'cos(0.5*phiTotal/theNumSide)', - // if not already scaled. - - public: // without description - - double DistanceToIn(const UVector3& p, - const UVector3& v, double aPstep = UUtils::kInfinity) const; - - UPolyhedra(const UPolyhedra& source); - UPolyhedra& operator=(const UPolyhedra& source); - // Copy constructor and assignment operator. - - protected: // without description - - inline void SetOriginalParameters(); - // Sets internal parameters for the generic constructor. - - void Create(double phiStart, // initial phi starting angle - double phiTotal, // total phi angle - int numSide, // number sides - UReduciblePolygon* rz); // rz coordinates - // Generates the shape and is called by each constructor, after the - // conversion of the arguments - - void CopyStuff(const UPolyhedra& source); - void DeleteStuff(); - - // Methods for generation of random points on surface - - UVector3 GetPointOnPlane(UVector3 p0, UVector3 p1, - UVector3 p2, UVector3 p3) const; - UVector3 GetPointOnTriangle(UVector3 p0, UVector3 p1, - UVector3 p2) const; - UVector3 GetPointOnSurfaceCorners() const; - - void Extent(UVector3& aMin, UVector3& aMax) const; - - protected: // without description - - int fNumSides; // Number of sides - double fStartPhi; // Starting phi value (0 < phiStart < 2pi) - double fEndPhi; // end phi value (0 < endPhi-phiStart < 2pi) - bool fPhiIsOpen; // true if there is a phi segment - bool fGenericPgon; // true if created through the 2nd generic constructor - int fNumCorner; // number RZ points - UPolyhedraSideRZ* fCorners; // our corners - UPolyhedraHistorical fOriginalParameters; // original input parameters - UEnclosingCylinder* fEnclosingCylinder; - -}; - -#include "UPolyhedra.icc" - -#endif +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UPolyhedra +// +// Class description: +// +// Class implementing a CSG-like type "PGON": +// +// UPolyhedra( const std::string& name, +// double phiStart, - initial phi starting angle +// double phiTotal, - total phi angle +// int numSide, - number sides +// int numZPlanes, - number of z planes +// const double zPlane[], - position of z planes +// const double rInner[], - tangent distance to inner surface +// const double rOuter[] ) - tangent distance to outer surface +// +// UPolyhedra( const std::string& name, +// double phiStart, - initial phi starting angle +// double phiTotal, - total phi angle +// int numSide, - number sides +// int numRZ, - number corners in r,z space +// const double r[], - r coordinate of these corners +// const double z[] ) - z coordinate of these corners +// +// 19.09.13 Marek Gayer +// Created from original implementation in Geant4 +// -------------------------------------------------------------------- + +#ifndef UPolyhedra_hh +#define UPolyhedra_hh + +#include "UVCSGfaceted.hh" +#include "UPolyhedraSide.hh" + +class UEnclosingCylinder; +class UReduciblePolygon; +class UPolyhedraHistorical +{ + public: + + UPolyhedraHistorical(); + ~UPolyhedraHistorical(); + UPolyhedraHistorical(const UPolyhedraHistorical& source); + UPolyhedraHistorical& operator=(const UPolyhedraHistorical& right); + + double fStartAngle; + double fOpeningAngle; + int fNumSide; + int fNumZPlanes; + std::vector fZValues; + std::vector Rmin; + std::vector Rmax; +}; + +class UPolyhedra : public UVCSGfaceted +{ + protected: + + inline UPolyhedra(const std::string& name) : UVCSGfaceted(name) {} + + public: // with description + + void Init( + double phiStart, // initial phi starting angle + double phiTotal, // total phi angle + int numSide, // number sides + int numZPlanes, // number of z planes + const double zPlane[], // position of z planes + const double rInner[], // tangent distance to inner surface + const double rOuter[]); // tangent distance to outer surface + + UPolyhedra(const std::string& name, + double phiStart, // initial phi starting angle + double phiTotal, // total phi angle + int numSide, // number sides + int numZPlanes, // number of z planes + const double zPlane[], // position of z planes + const double rInner[], // tangent distance to inner surface + const double rOuter[]); // tangent distance to outer surface + + UPolyhedra(const std::string& name, + double phiStart, // initial phi starting angle + double phiTotal, // total phi angle + int numSide, // number sides + int numRZ, // number corners in r,z space + const double r[], // r coordinate of these corners + const double z[]); // z coordinate of these corners + + virtual ~UPolyhedra(); + + // Methods for solid + + void GetParametersList(int /*aNumber*/, double* /*aArray*/) const {} + + void ComputeBBox(UBBox* /*aBox*/, bool /*aStore*/) + { + // Computes bounding box. + std::cout << "ComputeBBox - Not implemented" << std::endl; + } + + VUSolid::EnumInside Inside(const UVector3& p) const; + + // double DistanceToInDelete( const UVector3 &p, + // const UVector3 &v ) const; + + double SafetyFromOutside(const UVector3& aPoint, bool aAccurate = false) const; + + UGeometryType GetEntityType() const; + + VUSolid* Clone() const; + + UVector3 GetPointOnSurface() const; + + std::ostream& StreamInfo(std::ostream& os) const; + + bool Reset(); + + // Accessors + + inline int GetNumSide() const; + inline double GetStartPhi() const; + inline double GetEndPhi() const; + inline bool IsOpen() const; + inline bool IsGeneric() const; + inline int GetNumRZCorner() const; + inline UPolyhedraSideRZ GetCorner(const int index) const; + + inline UPolyhedraHistorical* GetOriginalParameters(); + // Returns internal scaled parameters. + inline void SetOriginalParameters(UPolyhedraHistorical& pars); + // Sets internal parameters. Parameters 'Rmin' and 'Rmax' in input must + // be scaled first by a factor computed as 'cos(0.5*phiTotal/theNumSide)', + // if not already scaled. + + public: // without description + + double DistanceToIn(const UVector3& p, + const UVector3& v, double aPstep = UUtils::kInfinity) const; + + UPolyhedra(const UPolyhedra& source); + UPolyhedra& operator=(const UPolyhedra& source); + // Copy constructor and assignment operator. + + void Extent(UVector3& aMin, UVector3& aMax) const; + + protected: // without description + + inline void SetOriginalParameters(); + // Sets internal parameters for the generic constructor. + + void Create(double phiStart, // initial phi starting angle + double phiTotal, // total phi angle + int numSide, // number sides + UReduciblePolygon* rz); // rz coordinates + // Generates the shape and is called by each constructor, after the + // conversion of the arguments + + void CopyStuff(const UPolyhedra& source); + void DeleteStuff(); + + // Methods for generation of random points on surface + + UVector3 GetPointOnPlane(UVector3 p0, UVector3 p1, + UVector3 p2, UVector3 p3) const; + UVector3 GetPointOnTriangle(UVector3 p0, UVector3 p1, + UVector3 p2) const; + UVector3 GetPointOnSurfaceCorners() const; + + + protected: // without description + + int fNumSides; // Number of sides + double fStartPhi; // Starting phi value (0 < phiStart < 2pi) + double fEndPhi; // end phi value (0 < endPhi-phiStart < 2pi) + bool fPhiIsOpen; // true if there is a phi segment + bool fGenericPgon; // true if created through the 2nd generic constructor + int fNumCorner; // number RZ points + UPolyhedraSideRZ* fCorners; // our corners + UPolyhedraHistorical fOriginalParameters; // original input parameters + UEnclosingCylinder* fEnclosingCylinder; + +}; + +#include "UPolyhedra.icc" + +#endif diff --git a/source/geometry/solids/usolids/include/UTubs.hh b/source/geometry/solids/usolids/include/UTubs.hh index 3775d46f147..b9f645277bc 100644 --- a/source/geometry/solids/usolids/include/UTubs.hh +++ b/source/geometry/solids/usolids/include/UTubs.hh @@ -1,192 +1,192 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UTubs -// -// Class description: -// -// A tube or tube segment with curved sides parallel to -// the z-axis. The tube has a specified half-length along -// the z-axis, about which it is centered, and a given -// minimum and maximum radius. A minimum radius of 0 -// corresponds to filled tube /cylinder. The tube segment is -// specified by starting and delta angles for phi, with 0 -// being the +x axis, PI/2 the +y axis. -// A delta angle of 2PI signifies a complete, unsegmented -// tube/cylinder. -// -// Member Data: -// -// fRMin Inner radius -// fRMax Outer radius -// fDz half length in z -// -// fSPhi The starting phi angle in radians, -// adjusted such that fSPhi+fDPhi<=2PI, fSPhi>-2PI -// -// fDPhi Delta angle of the segment. -// -// fPhiFullTube Boolean variable used for indicate the Phi Section -// -// 19.10.12 Marek Gayer -// Created from original implementation in Geant4 -// -------------------------------------------------------------------- - -#ifndef UTUBS_HH -#define UTUBS_HH - -#include "VUSolid.hh" - -class UTubs : public VUSolid -{ - public: // with description - - UTubs(const std::string& pName, - double pRMin, - double pRMax, - double pDz, - double pSPhi, - double pDPhi); - // - // Constructs a tubs with the given name and dimensions - - virtual ~UTubs(); - // - // Destructor - - // Accessors - - inline double GetInnerRadius() const; - inline double GetOuterRadius() const; - inline double GetZHalfLength() const; - inline double GetStartPhiAngle() const; - inline double GetDeltaPhiAngle() const; - - // Modifiers - - inline void SetInnerRadius(double newRMin); - inline void SetOuterRadius(double newRMax); - inline void SetZHalfLength(double newDz); - inline void SetStartPhiAngle(double newSPhi, bool trig = true); - inline void SetDeltaPhiAngle(double newDPhi); - - // Methods for solid - - inline double Capacity(); - inline double SurfaceArea(); - - inline VUSolid::EnumInside Inside(const UVector3& p) const; - - bool Normal(const UVector3& p, UVector3& normal) const; - - double DistanceToIn(const UVector3& p, const UVector3& v, - double aPstep = UUtils::kInfinity) const; - double SafetyFromInside(const UVector3& p, bool precise = false) const; - double DistanceToOut(const UVector3& p, const UVector3& v, UVector3& n, - bool& validNorm, double aPstep=UUtils::kInfinity) const; - double SafetyFromOutside(const UVector3& p, bool precise = false ) const; - - inline double SafetyFromInsideR(const UVector3& p, const double rho, - bool precise = false) const; - inline double SafetyFromOutsideR(const UVector3& p, const double rho, - bool precise = false) const; - UGeometryType GetEntityType() const; - - UVector3 GetPointOnSurface() const; - - VUSolid* Clone() const; - - std::ostream& StreamInfo(std::ostream& os) const; - - void Extent(UVector3& aMin, UVector3& aMax) const; - - virtual void GetParametersList(int /*aNumber*/, double* /*aArray*/) const; - virtual void ComputeBBox(UBBox* /*aBox*/, bool /*aStore = false*/) {} - - public: // without description - - UTubs(); - // - // Fake default constructor for usage restricted to direct object - // persistency for clients requiring preallocation of memory for - // persistifiable objects. - - UTubs(const UTubs& rhs); - UTubs& operator=(const UTubs& rhs); - // Copy constructor and assignment operator. - - // Older names for access functions - - inline double GetRMin() const; - inline double GetRMax() const; - inline double GetDz() const; - inline double GetSPhi() const; - inline double GetDPhi() const; - - protected: - - // UVector3List* - // CreateRotatedVertices( const UAffineTransform& pTransform ) const; - // - // Creates the List of transformed vertices in the format required - // for VUSolid:: ClipCrossSection and ClipBetweenSections - - inline void Initialize(); - // - // Reset relevant values to zero - - inline void CheckSPhiAngle(double sPhi); - inline void CheckDPhiAngle(double dPhi); - inline void CheckPhiAngles(double sPhi, double dPhi); - // - // Reset relevant flags and angle values - - inline void InitializeTrigonometry(); - // - // Recompute relevant trigonometric values and cache them - - virtual UVector3 ApproxSurfaceNormal(const UVector3& p) const; - // - // Algorithm for SurfaceNormal() following the original - // specification for points not on the surface - - inline double SafetyToPhi(const UVector3& p, const double rho, bool& outside) const; - protected: - - double fCubicVolume, fSurfaceArea; - // Used by distanceToOut - // - enum ESide {kNull, kRMin, kRMax, kSPhi, kEPhi, kPZ, kMZ}; - - // Used by normal - // - enum ENorm {kNRMin, kNRMax, kNSPhi, kNEPhi, kNZ}; - - double kRadTolerance, kAngTolerance; - // - // Radial and angular tolerances - - double fRMin, fRMax, fDz, fSPhi, fDPhi; - // - // Radial and angular dimensions - - double fSinCPhi, fCosCPhi, fCosHDPhiOT, fCosHDPhiIT, - fSinSPhi, fCosSPhi, fSinEPhi, fCosEPhi, fSinSPhiDPhi, fCosSPhiDPhi; - // - // Cached trigonometric values - - bool fPhiFullTube; - // - // Flag for identification of section or full tube -}; - -#include "UTubs.icc" - -#endif +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UTubs +// +// Class description: +// +// A tube or tube segment with curved sides parallel to +// the z-axis. The tube has a specified half-length along +// the z-axis, about which it is centered, and a given +// minimum and maximum radius. A minimum radius of 0 +// corresponds to filled tube /cylinder. The tube segment is +// specified by starting and delta angles for phi, with 0 +// being the +x axis, PI/2 the +y axis. +// A delta angle of 2PI signifies a complete, unsegmented +// tube/cylinder. +// +// Member Data: +// +// fRMin Inner radius +// fRMax Outer radius +// fDz half length in z +// +// fSPhi The starting phi angle in radians, +// adjusted such that fSPhi+fDPhi<=2PI, fSPhi>-2PI +// +// fDPhi Delta angle of the segment. +// +// fPhiFullTube Boolean variable used for indicate the Phi Section +// +// 19.10.12 Marek Gayer +// Created from original implementation in Geant4 +// -------------------------------------------------------------------- + +#ifndef UTUBS_HH +#define UTUBS_HH + +#include "VUSolid.hh" + +class UTubs : public VUSolid +{ + public: // with description + + UTubs(const std::string& pName, + double pRMin, + double pRMax, + double pDz, + double pSPhi, + double pDPhi); + // + // Constructs a tubs with the given name and dimensions + + virtual ~UTubs(); + // + // Destructor + + // Accessors + + inline double GetInnerRadius() const; + inline double GetOuterRadius() const; + inline double GetZHalfLength() const; + inline double GetStartPhiAngle() const; + inline double GetDeltaPhiAngle() const; + + // Modifiers + + inline void SetInnerRadius(double newRMin); + inline void SetOuterRadius(double newRMax); + inline void SetZHalfLength(double newDz); + inline void SetStartPhiAngle(double newSPhi, bool trig = true); + inline void SetDeltaPhiAngle(double newDPhi); + + // Methods for solid + + inline double Capacity(); + inline double SurfaceArea(); + + VUSolid::EnumInside Inside(const UVector3& p) const; + + bool Normal(const UVector3& p, UVector3& normal) const; + + double DistanceToIn(const UVector3& p, const UVector3& v, + double aPstep = UUtils::kInfinity) const; + double SafetyFromInside(const UVector3& p, bool precise = false) const; + double DistanceToOut(const UVector3& p, const UVector3& v, UVector3& n, + bool& validNorm, double aPstep=UUtils::kInfinity) const; + double SafetyFromOutside(const UVector3& p, bool precise = false ) const; + + inline double SafetyFromInsideR(const UVector3& p, const double rho, + bool precise = false) const; + inline double SafetyFromOutsideR(const UVector3& p, const double rho, + bool precise = false) const; + UGeometryType GetEntityType() const; + + UVector3 GetPointOnSurface() const; + + VUSolid* Clone() const; + + std::ostream& StreamInfo(std::ostream& os) const; + + void Extent(UVector3& aMin, UVector3& aMax) const; + + virtual void GetParametersList(int /*aNumber*/, double* /*aArray*/) const; + virtual void ComputeBBox(UBBox* /*aBox*/, bool /*aStore = false*/) {} + + public: // without description + + UTubs(); + // + // Fake default constructor for usage restricted to direct object + // persistency for clients requiring preallocation of memory for + // persistifiable objects. + + UTubs(const UTubs& rhs); + UTubs& operator=(const UTubs& rhs); + // Copy constructor and assignment operator. + + // Older names for access functions + + inline double GetRMin() const; + inline double GetRMax() const; + inline double GetDz() const; + inline double GetSPhi() const; + inline double GetDPhi() const; + + protected: + + // UVector3List* + // CreateRotatedVertices( const UAffineTransform& pTransform ) const; + // + // Creates the List of transformed vertices in the format required + // for VUSolid:: ClipCrossSection and ClipBetweenSections + + inline void Initialize(); + // + // Reset relevant values to zero + + inline void CheckSPhiAngle(double sPhi); + inline void CheckDPhiAngle(double dPhi); + inline void CheckPhiAngles(double sPhi, double dPhi); + // + // Reset relevant flags and angle values + + inline void InitializeTrigonometry(); + // + // Recompute relevant trigonometric values and cache them + + virtual UVector3 ApproxSurfaceNormal(const UVector3& p) const; + // + // Algorithm for SurfaceNormal() following the original + // specification for points not on the surface + + inline double SafetyToPhi(const UVector3& p, const double rho, bool& outside) const; + protected: + + double fCubicVolume, fSurfaceArea; + // Used by distanceToOut + // + enum ESide {kNull, kRMin, kRMax, kSPhi, kEPhi, kPZ, kMZ}; + + // Used by normal + // + enum ENorm {kNRMin, kNRMax, kNSPhi, kNEPhi, kNZ}; + + double kRadTolerance, kAngTolerance; + // + // Radial and angular tolerances + + double fRMin, fRMax, fDz, fSPhi, fDPhi; + // + // Radial and angular dimensions + + double fSinCPhi, fCosCPhi, fCosHDPhiOT, fCosHDPhiIT, + fSinSPhi, fCosSPhi, fSinEPhi, fCosEPhi, fSinSPhiDPhi, fCosSPhiDPhi; + // + // Cached trigonometric values + + bool fPhiFullTube; + // + // Flag for identification of section or full tube +}; + +#include "UTubs.icc" + +#endif diff --git a/source/geometry/solids/usolids/include/UUtils.hh b/source/geometry/solids/usolids/include/UUtils.hh index 54f505a84df..51b14fede96 100644 --- a/source/geometry/solids/usolids/include/UUtils.hh +++ b/source/geometry/solids/usolids/include/UUtils.hh @@ -1,229 +1,229 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UUtils -// -// Description: -// -// Utility namespace providing common constants and mathematical utilities. -// -// 19.10.12 Marek Gayer -// -------------------------------------------------------------------- - -#ifndef USOLIDS_UUtils -#define USOLIDS_UUtils - -#include -#include -#include -#include -#include -#include -#include - -struct UVector3; -class UTransform3D; - -enum ExceptionSeverity -{ FatalError, FatalErrorInArguments, Error, Warning, Info }; - -namespace UUtils -{ - - // Sign - inline short Sign(short a, short b); - inline int Sign(int a, int b); - inline long Sign(long a, long b); - inline float Sign(float a, float b); - inline double Sign(double a, double b); - - // Trigonometric - static const double kPi = 3.14159265358979323846; - static const double kTwoPi = 2.0 * kPi; - static const double kRadToDeg = 180.0 / kPi; - static const double kDegToRad = kPi / 180.0; - static const double kSqrt2 = 1.4142135623730950488016887242097; - static const double kInfinity = DBL_MAX; - - static const double kMeshAngleDefault = (kPi / 4); // Angle for mesh `wedges' in rads - static const int kMinMeshSections = 3; // Min wedges+1 to make - static const int kMaxMeshSections = 37; // max wedges+1 to make - - inline double Infinity(); - - inline double ASin(double); - inline double ACos(double); - inline double ATan(double); - inline double ATan2(double, double); - - //Warnings and Errors Messages - void Exception(const char* originOfException, - const char* exceptionCode, - ExceptionSeverity severity, - int level, - const char* description); - - - // Comparing floating points - inline bool AreEqualAbs(double af, double bf, double epsilon) - { - //return true if absolute difference between af and bf is less than epsilon - return std::abs(af - bf) < epsilon; - } - inline bool AreEqualRel(double af, double bf, double relPrec) - { - //return true if relative difference between af and bf is less than relPrec - return std::abs(af - bf) <= 0.5 * relPrec * (std::abs(af) + std::abs(bf)); - } - - // Locate Min, Max element number in an array - long LocMin(long n, const double* a); - long LocMax(long n, const double* a); - - // TransformLimits: Use the transformation to convert the local limits defined - // by min/max vectors to the master frame. Returns modified limits. - void TransformLimits(UVector3& min, UVector3& max, const UTransform3D& transformation); - - double Random(double min = 0.0, double max = 1.0); - - // Templates: - template - struct CompareDesc - { - - CompareDesc(T d) : fData(d) {} - - template - bool operator()(Index i1, Index i2) - { - return *(fData + i1) > *(fData + i2); - } - - T fData; - }; - - template - struct CompareAsc - { - - CompareAsc(T d) : fData(d) {} - - template - bool operator()(Index i1, Index i2) - { - return *(fData + i1) < *(fData + i2); - } - - T fData; - }; - - std::string ToString(int number); - std::string ToString(double number); - - int FileSize(const std::string& filePath); - - int StrPos(const std::string& haystack, const std::string& needle); - - inline double GetRadiusInRing(double rmin, double rmax); - - template - inline T sqr(const T& x) - { - return x * x; - } - - inline bool StrEnds(std::string const& fullString, std::string const& ending) - { - if (fullString.length() >= ending.length()) - { - return (0 == fullString.compare(fullString.length() - ending.length(), ending.length(), ending)); - } - else - { - return false; - } - } -} - -inline double UUtils::GetRadiusInRing(double rmin, double rmax) -{ - // Generate radius in annular ring according to uniform area - // - if (rmin <= 0.) - { - return rmax * std::sqrt(Random()); - } - if (rmin != rmax) - { - return std::sqrt(Random() - * (sqr(rmax) - sqr(rmin)) + sqr(rmin)); - } - return rmin; -} - -//____________________________________________________________________________ -inline double UUtils::Infinity() -{ - // returns an infinity as defined by the IEEE standard - return std::numeric_limits::infinity(); -} - -//---- Sign -------------------------------------------------------------------- -inline short UUtils::Sign(short a, short b) -{ - return (b >= 0) ? std::abs(a) : -std::abs(a); -} - -inline int UUtils::Sign(int a, int b) -{ - return (b >= 0) ? std::abs(a) : -std::abs(a); -} - -inline long UUtils::Sign(long a, long b) -{ - return (b >= 0) ? std::abs(a) : -std::abs(a); -} - -inline float UUtils::Sign(float a, float b) -{ - return (b >= 0) ? std::abs(a) : -std::abs(a); -} - -inline double UUtils::Sign(double a, double b) -{ - return (b >= 0) ? std::abs(a) : -std::abs(a); -} - - -//---- Trigonometric------------------------------------------------------------ -inline double UUtils::ASin(double x) -{ - if (x < -1.) return -kPi / 2; - if (x > 1.) return kPi / 2; - return std::asin(x); -} - -inline double UUtils::ACos(double x) -{ - if (x < -1.) return kPi; - if (x > 1.) return 0; - return std::acos(x); -} - - -inline double UUtils::ATan2(double y, double x) -{ - if (x != 0) return std::atan2(y, x); - if (y == 0) return 0; - if (y > 0) return kPi / 2; - else return -kPi / 2; -} - -#endif +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UUtils +// +// Description: +// +// Utility namespace providing common constants and mathematical utilities. +// +// 19.10.12 Marek Gayer +// -------------------------------------------------------------------- + +#ifndef USOLIDS_UUtils +#define USOLIDS_UUtils + +#include +#include +#include +#include +#include +#include +#include + +struct UVector3; +class UTransform3D; + +enum UExceptionSeverity +{ FatalError, FatalErrorInArguments, Error, Warning, Info }; + +namespace UUtils +{ + + // Sign + inline short Sign(short a, short b); + inline int Sign(int a, int b); + inline long Sign(long a, long b); + inline float Sign(float a, float b); + inline double Sign(double a, double b); + + // Trigonometric + static const double kPi = 3.14159265358979323846; + static const double kTwoPi = 2.0 * kPi; + static const double kRadToDeg = 180.0 / kPi; + static const double kDegToRad = kPi / 180.0; + static const double kSqrt2 = 1.4142135623730950488016887242097; + static const double kInfinity = DBL_MAX; + + static const double kMeshAngleDefault = (kPi / 4); // Angle for mesh `wedges' in rads + static const int kMinMeshSections = 3; // Min wedges+1 to make + static const int kMaxMeshSections = 37; // max wedges+1 to make + + inline double Infinity(); + + inline double ASin(double); + inline double ACos(double); + inline double ATan(double); + inline double ATan2(double, double); + + //Warnings and Errors Messages + void Exception(const char* originOfException, + const char* exceptionCode, + UExceptionSeverity severity, + int level, + const char* description); + + + // Comparing floating points + inline bool AreEqualAbs(double af, double bf, double epsilon) + { + //return true if absolute difference between af and bf is less than epsilon + return std::abs(af - bf) < epsilon; + } + inline bool AreEqualRel(double af, double bf, double relPrec) + { + //return true if relative difference between af and bf is less than relPrec + return std::abs(af - bf) <= 0.5 * relPrec * (std::abs(af) + std::abs(bf)); + } + + // Locate Min, Max element number in an array + long LocMin(long n, const double* a); + long LocMax(long n, const double* a); + + // TransformLimits: Use the transformation to convert the local limits defined + // by min/max vectors to the master frame. Returns modified limits. + void TransformLimits(UVector3& min, UVector3& max, const UTransform3D& transformation); + + double Random(double min = 0.0, double max = 1.0); + + // Templates: + template + struct CompareDesc + { + + CompareDesc(T d) : fData(d) {} + + template + bool operator()(Index i1, Index i2) + { + return *(fData + i1) > *(fData + i2); + } + + T fData; + }; + + template + struct CompareAsc + { + + CompareAsc(T d) : fData(d) {} + + template + bool operator()(Index i1, Index i2) + { + return *(fData + i1) < *(fData + i2); + } + + T fData; + }; + + std::string ToString(int number); + std::string ToString(double number); + + int FileSize(const std::string& filePath); + + int StrPos(const std::string& haystack, const std::string& needle); + + inline double GetRadiusInRing(double rmin, double rmax); + + template + inline T sqr(const T& x) + { + return x * x; + } + + inline bool StrEnds(std::string const& fullString, std::string const& ending) + { + if (fullString.length() >= ending.length()) + { + return (0 == fullString.compare(fullString.length() - ending.length(), ending.length(), ending)); + } + else + { + return false; + } + } +} + +inline double UUtils::GetRadiusInRing(double rmin, double rmax) +{ + // Generate radius in annular ring according to uniform area + // + if (rmin <= 0.) + { + return rmax * std::sqrt(Random()); + } + if (rmin != rmax) + { + return std::sqrt(Random() + * (sqr(rmax) - sqr(rmin)) + sqr(rmin)); + } + return rmin; +} + +//____________________________________________________________________________ +inline double UUtils::Infinity() +{ + // returns an infinity as defined by the IEEE standard + return std::numeric_limits::infinity(); +} + +//---- Sign -------------------------------------------------------------------- +inline short UUtils::Sign(short a, short b) +{ + return (b >= 0) ? std::abs(a) : -std::abs(a); +} + +inline int UUtils::Sign(int a, int b) +{ + return (b >= 0) ? std::abs(a) : -std::abs(a); +} + +inline long UUtils::Sign(long a, long b) +{ + return (b >= 0) ? std::abs(a) : -std::abs(a); +} + +inline float UUtils::Sign(float a, float b) +{ + return (b >= 0) ? std::abs(a) : -std::abs(a); +} + +inline double UUtils::Sign(double a, double b) +{ + return (b >= 0) ? std::abs(a) : -std::abs(a); +} + + +//---- Trigonometric------------------------------------------------------------ +inline double UUtils::ASin(double x) +{ + if (x < -1.) return -kPi / 2; + if (x > 1.) return kPi / 2; + return std::asin(x); +} + +inline double UUtils::ACos(double x) +{ + if (x < -1.) return kPi; + if (x > 1.) return 0; + return std::acos(x); +} + + +inline double UUtils::ATan2(double y, double x) +{ + if (x != 0) return std::atan2(y, x); + if (y == 0) return 0; + if (y > 0) return kPi / 2; + else return -kPi / 2; +} + +#endif diff --git a/source/geometry/solids/usolids/include/VUSolid.hh b/source/geometry/solids/usolids/include/VUSolid.hh index d7bee61ee3b..60559dff9d4 100644 --- a/source/geometry/solids/usolids/include/VUSolid.hh +++ b/source/geometry/solids/usolids/include/VUSolid.hh @@ -1,156 +1,156 @@ -#ifndef USOLIDS_VUSolid -#define USOLIDS_VUSolid -//////////////////////////////////////////////////////////////////////////////// -// "Universal" Solid Interface -// Authors: J. Apostolakis, G. Cosmo, M. Gayer, A. Gheata, A. Munnich, T. Nikitina (CERN) -// -// Created: 25 May 2011 -// -//////////////////////////////////////////////////////////////////////////////// - -#include "UTypes.hh" -#include "UVector3.hh" - -#include "UUtils.hh" - -#define USOLIDS -#define USOLIDSONLY - -class VUSolid -{ -public: - -enum EnumInside { eInside=0, eSurface=1, eOutside=2 }; - // Use eInside < eSurface < eOutside: allows "max(,)" to combine Inside of surfaces - // Potentially replace eSurface with eInSurface, eOutSurface - -enum EAxisType { eXaxis=0, eYaxis=1, eZaxis=2}; - -protected: -static double fgTolerance; -static double frTolerance; -static double faTolerance; - -// =>10 degrees/wedge for complete tube - -public: - VUSolid(); - VUSolid(const std::string &name); - virtual ~VUSolid(); - - // Accessors and modifiers for Tolerance - inline double GetCarTolerance() const; - inline double GetRadTolerance() const; - inline double GetAngTolerance() const; - void SetCarTolerance(double eps); - void SetRadTolerance(double eps); - void SetAngTolerance(double eps); - - // Navigation methods - virtual EnumInside Inside (const UVector3 &aPoint) const = 0; - // - // Evaluate if point is inside, outside or on the surface within the tolerance - virtual double SafetyFromInside ( const UVector3 &aPoint, - bool aAccurate=false) const = 0; - virtual double SafetyFromOutside( const UVector3 &aPoint, - bool aAccurate=false) const = 0; - // - // Estimates isotropic distance to the surface of the solid. This must - // be either accurate or an underestimate. - // Two modes: - default/fast mode, sacrificing accuracy for speed - // - "precise" mode, requests accurate value if available. - // For both modes, if at a large distance from solid ( > ? ) - // it is expected that a simplified calculation will be made if available. - - virtual double DistanceToIn( const UVector3 &aPoint, - const UVector3 &aDirection, - double aPstep = UUtils::kInfinity) const = 0; - virtual double DistanceToOut( const UVector3 &aPoint, - const UVector3 &aDirection, - UVector3 &aNormalVector, - bool &aConvex, - double aPstep = UUtils::kInfinity) const = 0; - // - // o return the exact distance (double) from a surface, given a direction - // o compute the normal on the surface, returned as argument, calculated - // within the method to verify if it is close to the surface or not - // o for DistanceToOut(), normal-vector and convexity flag could be optional (to decide). - // If normal cannot be computed (or shape is not convex), set 'convex' to 'false'. - // o for DistanceToIn(), the normal-vector could be added as optional - - virtual bool Normal( const UVector3& aPoint, UVector3 &aNormal ) const = 0; - // Computes the normal on a surface and returns it as a unit vector - // In case a point is further than tolerance_normal from a surface, set validNormal=false - // Must return a valid vector. (even if the point is not on the surface.) - // - // On an edge or corner, provide an average normal of all facets within tolerance - - // Decision: provide or not the Boolean 'validNormal' argument for returning validity - - virtual void ExtentAxis(EAxisType aAxis, double &aMin, double &aMax) const; - - virtual void Extent( UVector3 &aMin, UVector3 &aMax ) const = 0; - // Return the minimum and maximum extent along all Cartesian axes - // For both the Extent methods - // o Expect mostly to use a GetBBox()/CalculateBBox() method internally to compute the extent - // o Decision: whether to store the computed BBox (containing or representing 6 double values), - // and whether to compute it at construction time. - // Methods are *not* const to allow caching of the Bounding Box - virtual UGeometryType GetEntityType() const = 0; - // Provide identification of the class of an object. - // (required for persistency and STEP interface) - - const std::string &GetName() const {return fName;} - void SetName(const std::string &aName) {fName = aName;} - - // Auxiliary methods - virtual double Capacity() = 0 ; // like CubicVolume() - virtual double SurfaceArea() = 0 ; - // Expect the solids to cache the values of Capacity and Surface Area - - // Sampling - virtual void SamplePointsInside(int /*aNpoints*/, UVector3 * /*aArray*/) const {} - virtual void SamplePointsOnSurface(int /*aNpoints*/, UVector3 * /*aArray*/) const {} - virtual void SamplePointsOnEdge(int /*aNpoints*/, UVector3 * /*aArray*/) const {} - // o generates points on the edges of a solid - primarily for testing purposes - // o for solids composed only of curved surfaces(like full spheres or toruses) or - // where an implementation is not available, it defaults to PointOnSurface. - - // Visualisation - virtual void GetParametersList(int aNumber,double *aArray) const =0; - - virtual VUSolid* Clone() const =0; - // o provide a new object which is a clone of the solid - - // Visualization - - static double Tolerance() {return fgTolerance;} - - inline virtual std::ostream& StreamInfo( std::ostream& os ) const = 0; - - virtual UVector3 GetPointOnSurface() const = 0; - - double EstimateCubicVolume(int nStat, double epsilon) const; - // Calculate cubic volume based on Inside() method. - // Accuracy is limited by the second argument or the statistics - // expressed by the first argument. - - double EstimateSurfaceArea(int nStat, double ell) const; - // Calculate surface area only based on Inside() method. - // Accuracy is limited by the second argument or the statistics - // expressed by the first argument. - -protected: - virtual void ComputeBBox(UBBox *aBox, bool aStore = false) = 0; - // o Compute the bounding box for the solid. Called automatically and stored ? - // o Can throw an exception if the solid is invalid -private: - std::string fName; // Name of the solid - //UBBox *fBBox; // Bounding box -}; -inline double VUSolid::GetCarTolerance() const { return fgTolerance;} -inline double VUSolid::GetRadTolerance() const { return frTolerance;} -inline double VUSolid::GetAngTolerance() const { return faTolerance;} - -#endif - +#ifndef USOLIDS_VUSolid +#define USOLIDS_VUSolid +//////////////////////////////////////////////////////////////////////////////// +// "Universal" Solid Interface +// Authors: J. Apostolakis, G. Cosmo, M. Gayer, A. Gheata, A. Munnich, T. Nikitina (CERN) +// +// Created: 25 May 2011 +// +//////////////////////////////////////////////////////////////////////////////// + +#include "UTypes.hh" +#include "UVector3.hh" + +#include "UUtils.hh" + +#define USOLIDS +#define USOLIDSONLY + +class VUSolid +{ +public: + +enum EnumInside { eInside=0, eSurface=1, eOutside=2 }; + // Use eInside < eSurface < eOutside: allows "max(,)" to combine Inside of surfaces + // Potentially replace eSurface with eInSurface, eOutSurface + +enum EAxisType { eXaxis=0, eYaxis=1, eZaxis=2}; + +protected: +static double fgTolerance; +static double frTolerance; +static double faTolerance; + +// =>10 degrees/wedge for complete tube + +public: + VUSolid(); + VUSolid(const std::string &name); + virtual ~VUSolid(); + + // Accessors and modifiers for Tolerance + inline double GetCarTolerance() const; + inline double GetRadTolerance() const; + inline double GetAngTolerance() const; + void SetCarTolerance(double eps); + void SetRadTolerance(double eps); + void SetAngTolerance(double eps); + + // Navigation methods + virtual EnumInside Inside (const UVector3 &aPoint) const = 0; + // + // Evaluate if point is inside, outside or on the surface within the tolerance + virtual double SafetyFromInside ( const UVector3 &aPoint, + bool aAccurate=false) const = 0; + virtual double SafetyFromOutside( const UVector3 &aPoint, + bool aAccurate=false) const = 0; + // + // Estimates isotropic distance to the surface of the solid. This must + // be either accurate or an underestimate. + // Two modes: - default/fast mode, sacrificing accuracy for speed + // - "precise" mode, requests accurate value if available. + // For both modes, if at a large distance from solid ( > ? ) + // it is expected that a simplified calculation will be made if available. + + virtual double DistanceToIn( const UVector3 &aPoint, + const UVector3 &aDirection, + double aPstep = UUtils::kInfinity) const = 0; + virtual double DistanceToOut( const UVector3 &aPoint, + const UVector3 &aDirection, + UVector3 &aNormalVector, + bool &aConvex, + double aPstep = UUtils::kInfinity) const = 0; + // + // o return the exact distance (double) from a surface, given a direction + // o compute the normal on the surface, returned as argument, calculated + // within the method to verify if it is close to the surface or not + // o for DistanceToOut(), normal-vector and convexity flag could be optional (to decide). + // If normal cannot be computed (or shape is not convex), set 'convex' to 'false'. + // o for DistanceToIn(), the normal-vector could be added as optional + + virtual bool Normal( const UVector3& aPoint, UVector3 &aNormal ) const = 0; + // Computes the normal on a surface and returns it as a unit vector + // In case a point is further than tolerance_normal from a surface, set validNormal=false + // Must return a valid vector. (even if the point is not on the surface.) + // + // On an edge or corner, provide an average normal of all facets within tolerance + + // Decision: provide or not the Boolean 'validNormal' argument for returning validity + + virtual void ExtentAxis(EAxisType aAxis, double &aMin, double &aMax) const; + + virtual void Extent( UVector3 &aMin, UVector3 &aMax ) const = 0; + // Return the minimum and maximum extent along all Cartesian axes + // For both the Extent methods + // o Expect mostly to use a GetBBox()/CalculateBBox() method internally to compute the extent + // o Decision: whether to store the computed BBox (containing or representing 6 double values), + // and whether to compute it at construction time. + // Methods are *not* const to allow caching of the Bounding Box + virtual UGeometryType GetEntityType() const = 0; + // Provide identification of the class of an object. + // (required for persistency and STEP interface) + + const std::string &GetName() const {return fName;} + void SetName(const std::string &aName) {fName = aName;} + + // Auxiliary methods + virtual double Capacity() = 0 ; // like CubicVolume() + virtual double SurfaceArea() = 0 ; + // Expect the solids to cache the values of Capacity and Surface Area + + // Sampling + virtual void SamplePointsInside(int /*aNpoints*/, UVector3 * /*aArray*/) const {} + virtual void SamplePointsOnSurface(int /*aNpoints*/, UVector3 * /*aArray*/) const {} + virtual void SamplePointsOnEdge(int /*aNpoints*/, UVector3 * /*aArray*/) const {} + // o generates points on the edges of a solid - primarily for testing purposes + // o for solids composed only of curved surfaces(like full spheres or toruses) or + // where an implementation is not available, it defaults to PointOnSurface. + + // Visualisation + virtual void GetParametersList(int aNumber,double *aArray) const =0; + + virtual VUSolid* Clone() const =0; + // o provide a new object which is a clone of the solid + + // Visualization + + static double Tolerance() {return fgTolerance;} + + virtual std::ostream& StreamInfo( std::ostream& os ) const = 0; + + virtual UVector3 GetPointOnSurface() const = 0; + + double EstimateCubicVolume(int nStat, double epsilon) const; + // Calculate cubic volume based on Inside() method. + // Accuracy is limited by the second argument or the statistics + // expressed by the first argument. + + double EstimateSurfaceArea(int nStat, double ell) const; + // Calculate surface area only based on Inside() method. + // Accuracy is limited by the second argument or the statistics + // expressed by the first argument. + +protected: + virtual void ComputeBBox(UBBox *aBox, bool aStore = false) = 0; + // o Compute the bounding box for the solid. Called automatically and stored ? + // o Can throw an exception if the solid is invalid +private: + std::string fName; // Name of the solid + //UBBox *fBBox; // Bounding box +}; +inline double VUSolid::GetCarTolerance() const { return fgTolerance;} +inline double VUSolid::GetRadTolerance() const { return frTolerance;} +inline double VUSolid::GetAngTolerance() const { return faTolerance;} + +#endif + diff --git a/source/geometry/solids/usolids/src/G4USolid.cc b/source/geometry/solids/usolids/src/G4USolid.cc index 43ddbbe8607..949dbd4667d 100644 --- a/source/geometry/solids/usolids/src/G4USolid.cc +++ b/source/geometry/solids/usolids/src/G4USolid.cc @@ -360,13 +360,7 @@ G4GeometryType G4USolid::GetEntityType() const std::ostream& G4USolid::StreamInfo(std::ostream& os) const { - os << "-----------------------------------------------------------\n" - << " *** Dump for solid - " << fShape->GetName() << " ***\n"; - // << " ===================================================\n" - // << " Solid type: " << fShape->GetEntityType() << "\n" - // << "-----------------------------------------------------------\n"; - - return os;//fShape->StreamInfo(os); + return fShape->StreamInfo(os); } G4USolid::G4USolid(const G4USolid& rhs) diff --git a/source/geometry/solids/usolids/src/UPolycone.cc b/source/geometry/solids/usolids/src/UPolycone.cc index e755531b296..728f37f5b4f 100644 --- a/source/geometry/solids/usolids/src/UPolycone.cc +++ b/source/geometry/solids/usolids/src/UPolycone.cc @@ -1,1589 +1,1659 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UPolycone -// -// 19.04.13 Marek Gayer -// Created from original implementation in Geant4 -// -------------------------------------------------------------------- - -#include "UUtils.hh" -#include -#include -#include -#include "UPolycone.hh" - -#include "UEnclosingCylinder.hh" -#include "UReduciblePolygon.hh" - -#include "UTubs.hh" -#include "UCons.hh" -#include "UTransform3D.hh" - -using namespace std; - -UPolycone::UPolycone(const std::string& name, - double phiStart, - double phiTotal, - int numZPlanes, - const double zPlane[], - const double rInner[], - const double rOuter[]) - : VUSolid(name) //, fNumSides(0) -{ - fCubicVolume = 0; - fSurfaceArea = 0; - Init(phiStart, phiTotal, numZPlanes, zPlane, rInner, rOuter); - -} - -UPolycone::UPolycone(const std::string& name, - double phiStart, - double phiTotal, - int numRZ, - const double r[], - const double z[]) - : VUSolid(name) -{ - UReduciblePolygon* rz = new UReduciblePolygon(r, z, numRZ); - - // Create( phiStart, phiTotal, rz ); - - // Set original_parameters struct for consistency - // - - bool convertible = SetOriginalParameters(rz); - - if (!convertible) - { - std::ostringstream message; - message << "Polycone " << GetName() << "cannot be converted" << std::endl - << "to Polycone with (Rmin,Rmaz,Z) parameters! Use GenericPolycone" ; - UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", - FatalError, 1, message.str().c_str()); - } - else - { - std::cout << "INFO: Converting polycone " << GetName() << std::endl - << "to optimized polycone with (Rmin,Rmaz,Z) parameters !" - << std::endl; - double* Z, *R1, *R2; - int num = fOriginalParameters->fNumZPlanes; - Z = new double[num]; - R1 = new double[num]; - R2 = new double[num]; - for (int i = 0; i < num; i++) - { - Z[i] = fOriginalParameters->fZValues[i]; - R1[i] = fOriginalParameters->Rmin[i]; - R2[i] = fOriginalParameters->Rmax[i]; - } - - delete(fOriginalParameters); - Init(phiStart, phiTotal, num, Z, R1, R2); - delete [] R1; - delete [] Z; - delete [] R2; - } - - delete rz; -} - - -// -// Constructor (GEANT3 style parameters) -// -void UPolycone::Init(double phiStart, - double phiTotal, - int numZPlanes, - const double zPlane[], - const double rInner[], - const double rOuter[]) -{ - //Convertion for angles - - if (phiTotal <= 0 || phiTotal > UUtils::kTwoPi-1E-10) - { - phiIsOpen=false; - startPhi = 0; - endPhi = UUtils::kTwoPi; - } - else - { - // - // Convert phi into our convention - // - phiIsOpen=true; - startPhi = phiStart; - while( startPhi < 0 ) startPhi += UUtils::kTwoPi; - - endPhi = phiStart+phiTotal; - while( endPhi < startPhi ) endPhi += UUtils::kTwoPi; - } - // Set Parameters - fOriginalParameters = new UPolyconeHistorical(); - fOriginalParameters->fStartAngle = startPhi; - fOriginalParameters->fOpeningAngle = endPhi-startPhi; - fOriginalParameters->fNumZPlanes = numZPlanes; - fOriginalParameters->fZValues.resize(numZPlanes); - fOriginalParameters->Rmin.resize(numZPlanes); - fOriginalParameters->Rmax.resize(numZPlanes); - - // Calculate RMax of Polycone in order to determine convexity of sections - // - double RMaxextent=rOuter[0]; - for (int j=1; j < numZPlanes; j++) - { - if (rOuter[j] > RMaxextent) RMaxextent=rOuter[j]; - if (rInner[j]>rOuter[j]) - { - std::ostringstream message; - message << "Cannot create Polycone with rInner > rOuter for the same Z" - << std::endl - << " rInner > rOuter for the same Z !" << std::endl - << " rMin[" << j << "] = " << rInner[j] - << " -- rMax[" << j << "] = " << rOuter[j]; - UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", - FatalErrorInArguments, 1, message.str().c_str()); - } - } - // - double prevZ = 0, prevRmax = 0, prevRmin = 0; - int dirZ = 1; - if (zPlane[1] < zPlane[0])dirZ = -1; -// int curSolid = 0; - - int i; - for (i = 0; i < numZPlanes; i++) - { - if ((i < numZPlanes - 1) && (zPlane[i] == zPlane[i + 1])) - { - if ((rInner[i] > rOuter[i + 1]) - || (rInner[i + 1] > rOuter[i])) - { - - std::ostringstream message; - message << "Cannot create a Polycone with no contiguous segments." - << std::endl - << "Segments are not contiguous !" << std::endl - << " rMin[" << i << "] = " << rInner[i] - << " -- rMax[" << i + 1 << "] = " << rOuter[i + 1] << std::endl - << " rMin[" << i + 1 << "] = " << rInner[i + 1] - << " -- rMax[" << i << "] = " << rOuter[i]; - UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", - FatalErrorInArguments, 1, message.str().c_str()); - } - } - - - - double rMin = rInner[i]; - double rMax = rOuter[i]; - double z = zPlane[i]; - - if (i > 0) - { - if (z > prevZ) - { - if (dirZ < 0) - { - std::ostringstream message; - message << "Cannot create a Polycone with different Z directions.Use GenericPolycone." - << std::endl - << "ZPlane is changing direction !" << std::endl - << " zPlane[0] = " << zPlane[0] - << " -- zPlane[1] = " << zPlane[1] << std::endl - << " zPlane[" << i - 1 << "] = " << zPlane[i - 1] - << " -- rPlane[" << i << "] = " << zPlane[i]; - UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", - FatalErrorInArguments, 1, message.str().c_str()); - - - - } - VUSolid* solid; - double dz = (z - prevZ) / 2; - - bool tubular = (rMin == prevRmin && prevRmax == rMax); - -// if (fNumSides == 0) - { - if (tubular) - { - solid = new UTubs("", rMin, rMax, dz, phiStart, phiTotal); - } - else - { - solid = new UCons("", prevRmin, prevRmax, rMin, rMax, dz, phiStart, phiTotal); - } - } -// else -// { -// solid = new UHedra("", prevRmin, prevRmax, rMin, rMax, dz, phiStart, phiTotal, fNumSides); -// } - - fZs.push_back(z); - - int zi = fZs.size() - 1; - double shift = fZs[zi - 1] + 0.5 * (fZs[zi] - fZs[zi - 1]); - - UPolyconeSection section; - section.shift = shift; - section.tubular = tubular; - section.solid = solid; - if(tubular) - { - if (rMax < RMaxextent) { section.convex = false;} - else { section.convex = true;} - } - else - { - if ((rMaxfZValues[i] = zPlane[i]; - fOriginalParameters->Rmin[i] = rInner[i]; - fOriginalParameters->Rmax[i] = rOuter[i]; - - prevZ = z; - prevRmin = rMin; - prevRmax = rMax; - } - - fMaxSection = fZs.size() - 2; - - // - // Build RZ polygon using special PCON/PGON GEANT3 constructor - // - UReduciblePolygon* rz = new UReduciblePolygon(rInner, rOuter, zPlane, numZPlanes); - - double mxy = rz->Amax(); -// double alfa = UUtils::kPi / fNumSides; - - double r = rz->Amax(); -// -// Perform checks of rz values -// - if (rz->Amin() < 0.0) - { - std::ostringstream message; - message << "Illegal input parameters - " << GetName() << std::endl - << " All R values must be >= 0 !"; - UUtils::Exception("UPolycone::Init()", "GeomSolids0002", - FatalErrorInArguments,1, message.str().c_str()); - } - - - /* - if (fNumSides != 0) - { - // mxy *= std::sqrt(2.0); // this is old and wrong, works only for n = 4 - // double k = std::tan(alfa) * mxy; - double l = mxy / std::cos(alfa); - mxy = l; - r = l; - } - */ - - mxy += fgTolerance; - - fBox.Set(mxy, mxy, (rz->Bmax() - rz->Bmin()) / 2); - - // - // Make enclosingCylinder - // - - enclosingCylinder = new UEnclosingCylinder(r, rz->Bmax(), rz->Bmin(), phiIsOpen, phiStart, phiTotal); - - delete rz; -} - - -/* -// -// Constructor (generic parameters) -// -UPolycone3::UPolycone3( const std::string& name, - double phiStart, - double phiTotal, - int numRZ, - const double r[], - const double z[] ) - : VUSolid( name ) -{ - UReduciblePolygon *rz = new UReduciblePolygon( r, z, numRZ ); - - box.Set(rz->Amax(), rz->Amax(), (rz->Bmax() - rz->Bmin()) /2); - - // Set fOriginalParameters struct for consistency - // - SetOriginalParameters(); - - delete rz; -} -*/ - - -// -// Destructor -// -UPolycone::~UPolycone() -{ - //delete [] corners; - //delete fOriginalParameters; -} - - - -// -// Stream object contents to an output stream -// -std::ostream& UPolycone::StreamInfo(std::ostream& os) const -{ - int oldprc = os.precision(16); - os << "-----------------------------------------------------------\n" - << " *** Dump for solid - " << GetName() << " ***\n" - << " ===================================================\n" - << " Solid type: UPolycone3\n" - << " Parameters: \n" - << " starting phi angle : " << startPhi / (UUtils::kPi / 180.0) << " degrees \n" - << " ending phi angle : " << endPhi / (UUtils::kPi / 180.0) << " degrees \n"; - int i = 0; - int numPlanes = fOriginalParameters->fNumZPlanes; - os << " number of Z planes: " << numPlanes << "\n" - << " Z values: \n"; - for (i = 0; i < numPlanes; i++) - { - os << " Z plane " << i << ": " - << fOriginalParameters->fZValues[i] << "\n"; - } - os << " Tangent distances to inner surface (Rmin): \n"; - for (i = 0; i < numPlanes; i++) - { - os << " Z plane " << i << ": " - << fOriginalParameters->Rmin[i] << "\n"; - } - os << " Tangent distances to outer surface (Rmax): \n"; - for (i = 0; i < numPlanes; i++) - { - os << " Z plane " << i << ": " - << fOriginalParameters->Rmax[i] << "\n"; - } - os << "-----------------------------------------------------------\n"; - os.precision(oldprc); - - return os; -} - - -VUSolid::EnumInside UPolycone::InsideSection(int index, const UVector3& p) const -{ - const UPolyconeSection& section = fSections[index]; - UVector3 ps(p.x, p.y, p.z - section.shift); - -// if (fNumSides) return section.solid->Inside(ps); - - double rMinPlus, rMaxPlus; //, rMinMinus, rMaxMinus; - double dz; - static double halfTolerance = fgTolerance * 0.5; - - if (section.tubular) - { - UTubs* tubs = (UTubs*) section.solid; - rMinPlus = tubs->GetRMin() + halfTolerance; - rMaxPlus = tubs->GetRMax() + halfTolerance; - dz = tubs->GetDz();//GetZHalfLength(); - } - else - { - UCons* cons = (UCons*) section.solid; - - double rMax1 = cons->GetRmax1(); - double rMax2 = cons->GetRmax2(); - double rMin1 = cons->GetRmin1(); - double rMin2 = cons->GetRmin2(); - - dz = cons->GetDz(); - double ratio = (ps.z + dz) / (2 * dz); - rMinPlus = rMin1 + (rMin2 - rMin1) * ratio + halfTolerance; - rMaxPlus = rMax1 + (rMax2 - rMax1) * ratio + halfTolerance; - } - - double rMinMinus = rMinPlus - fgTolerance; - double rMaxMinus = rMaxPlus - fgTolerance; - - double r2 = p.x * p.x + p.y * p.y; - - if (r2 < rMinMinus * rMinMinus || r2 > rMaxPlus * rMaxPlus) return eOutside; - if (r2 < rMinPlus * rMinPlus || r2 > rMaxMinus * rMaxMinus) return eSurface; - - if (! phiIsOpen ) - { - if (ps.z < -dz + halfTolerance || ps.z > dz - halfTolerance) - return eSurface; - return eInside; - } - - if (r2 < 1e-10) return eInside; - - double phi = std::atan2(p.y, p.x); // * UUtils::kTwoPi; - if ((phi < 0)||(endPhi > UUtils::kTwoPi)) phi += UUtils::kTwoPi; - - double ddp = phi - startPhi; - if (ddp < 0) ddp += UUtils::kTwoPi; - if ((phi <= endPhi + frTolerance)&&(phi>= startPhi-frTolerance)) - { - if (ps.z < -dz + halfTolerance || ps.z > dz - halfTolerance) - return eSurface; - - if (std::fabs(endPhi - phi) < frTolerance) - return eSurface; - if (std::fabs(startPhi - phi) < frTolerance) - return eSurface; - - return eInside; - } - return eOutside; -} - - -VUSolid::EnumInside UPolycone::Inside(const UVector3& p) const -{ - double shift = fZs[0] + fBox.GetZHalfLength(); - UVector3 pb(p.x, p.y, p.z - shift); - if (fBox.Inside(pb) == eOutside) - return eOutside; - - static const double htolerance = 0.5 * fgTolerance; - int index = GetSection(p.z); - - EnumInside pos = InsideSection(index, p); - if (pos == eInside) return eInside; - - int nextSection; - EnumInside nextPos; - - if (index > 0 && p.z - fZs[index] < htolerance) - { - nextSection = index - 1; - nextPos = InsideSection(nextSection, p); - } - else if (index < fMaxSection && fZs[index + 1] - p.z < htolerance) - { - nextSection = index + 1; - nextPos = InsideSection(nextSection, p); - } - else - return pos; - - if (nextPos == eInside) return eInside; - - if (pos == eSurface && nextPos == eSurface) - { - UVector3 n, n2; - NormalSection(index, p, n); - NormalSection(nextSection, p, n2); - if ((n + n2).Mag2() < 1000 * frTolerance) - return eInside; - } - - return (nextPos == eSurface || pos == eSurface) ? eSurface : eOutside; - -// return (res == VUSolid::eOutside) ? nextPos : res; -} - -/* -if (p.z < fZs.front() - htolerance || p.z > fZs.back() + htolerance) return VUSolid::eOutside; -*/ - -double UPolycone::DistanceToIn(const UVector3& p, - const UVector3& v, double) const -{ - double shift = fZs[0] + fBox.GetZHalfLength(); - UVector3 pb(p.x, p.y, p.z - shift); - - double idistance; - - idistance = fBox.DistanceToIn(pb, v); - // using only box, this appears - // to be faster than: idistance = enclosingCylinder->DistanceTo(pb, v); - if (idistance >= UUtils::kInfinity) return idistance; - - // this line can be here or not. not a big difference in performance - // TODO: fix enclosingCylinder for polyhedra!!! - the current radius - // appears to be too small - // if (enclosingCylinder->ShouldMiss(p, v)) return UUtils::kInfinity; - - // this just takes too much time - // idistance = enclosingCylinder->DistanceTo(pb, v); - // if (idistance == UUtils::kInfinity) return idistance; - - pb = p + idistance * v; - int index = GetSection(pb.z); - pb = p; - int increment = (v.z > 0) ? 1 : -1; - if (std::fabs(v.z) < fgTolerance) increment = 0; - - double distance = UUtils::kInfinity; - do - { - const UPolyconeSection& section = fSections[index]; - pb.z -= section.shift; - distance = section.solid->DistanceToIn(pb, v); - if (distance < UUtils::kInfinity || !increment) - break; - index += increment; - pb.z += section.shift; - } - while (index >= 0 && index <= fMaxSection); - //if(Inside(p)==eInside)return UUtils::kInfinity; - return distance; -} - -double UPolycone::DistanceToOut(const UVector3& p, const UVector3& v, - UVector3& n, bool& convex, double /*aPstep*/) const -{ - UVector3 pn(p); - - if (fOriginalParameters->fNumZPlanes == 2) - { - const UPolyconeSection& section = fSections[0]; - pn.z -= section.shift; - return section.solid->DistanceToOut(pn, v, n, convex); - } - - int indexLow = GetSection(p.z-fgTolerance); - int indexHigh = GetSection(p.z+fgTolerance); - int index = 0; - - if ( indexLow != indexHigh ) - { //we are close to Surface, section has to be identified - const UPolyconeSection& section = fSections[indexLow]; - pn.z -= section.shift; - if(section.solid->Inside(pn) == eOutside){index=indexHigh;} - else{index=indexLow;} - pn.z=p.z; - } - else{index=indexLow;} - double totalDistance = 0; - int increment = (v.z > 0) ? 1 : -1; - bool convexloc=true; - - UVector3 section_norm; - section_norm.Set(0); - do - { - const UPolyconeSection& section = fSections[index]; - - if (totalDistance != 0) - { - pn = p + (totalDistance /*+ 0 * 1e-8*/) * v; // point must be shifted, so it could eventually get into another solid - pn.z -= section.shift; - if (section.solid->Inside(pn) == eOutside) - { - break; - } - } - else pn.z -= section.shift; - - double distance = section.solid-> DistanceToOut(pn, v, n, convexloc); //section.solid->DistanceToOut(pn, v, n, convexloc); - //Section Surface case - if(std::fabs(distance) < 0.5*fgTolerance) - { int index1 = index; - if(( index > 0) && ( index < fMaxSection )){index1 += increment;} - else{ - if((index == 0) && ( increment > 0 ))index1 += increment; - if((index == fMaxSection) && (increment<0 ))index1 += increment; - } - UVector3 pte = p+(totalDistance+distance)*v; - const UPolyconeSection& section1 = fSections[index1]; - pte.z -= section1.shift; - if (section1.solid->Inside(pte) == eOutside) - { - break; - } - } - //Convexity - if((index < fMaxSection) && (index > 0 )){ - if((convexloc) && (section.convex)) {convexloc=true;} - else{convexloc=false;} - } - - totalDistance += distance; - - index += increment; - - } - while (index >= 0 && index <= fMaxSection); - - convex=convexloc; - if(convex){ - //Check final convexity for dz - pn = p + (totalDistance) * v; - double halfTolerance = 0.5*fgTolerance; - if((index < fMaxSection) && (index > 0 )) - { - double dz1 = std::fabs(pn.z-fZs[index]); - double dz2 = std::fabs(pn.z-fZs[index+1]); - if(dz1 < halfTolerance)convex=false; - if(dz2 < halfTolerance)convex=false; - - }else{ - if(index>=fMaxSection){ - if(std::fabs(pn.z-fZs[fMaxSection]) < halfTolerance)convex=false; - }else{ - if(index<=0){if(std::fabs(pn.z-fZs[1]) < halfTolerance)convex=false;} - } - } - } - return totalDistance; -} - -double UPolycone::SafetyFromInside(const UVector3& p, bool) const -{ - int index = UVoxelizer::BinarySearch(fZs, p.z); - if (index < 0 || index > fMaxSection) return 0; - - double rho=std::sqrt(p.x*p.x+p.y*p.y); - double safeR = SafetyFromInsideSection(index,rho, p); - double safeDown = p.z-fZs[index]; - double safeUp = fZs[index+1]-p.z; - - double minSafety =safeR; - - if (minSafety == UUtils::kInfinity) return 0; - if (minSafety < 1e-6) return 0; - - for (int i = index + 1; i <= fMaxSection; ++i) - { - double dz1 = fZs[i] - p.z; - double dz2 = fZs[i+1] - p.z; - safeR = SafetyFromOutsideSection(i,rho, p); - if (safeR < 0.) { safeUp=dz1; break; } - if (dz1 < dz2) { safeR = std::sqrt(safeR*safeR+dz1*dz1); } - else {safeR = std::sqrt(safeR*safeR+dz1*dz1); } - if (safeR < dz1) { safeUp = safeR; break; } - if (safeR < dz2) { safeUp = safeR; break; } - safeUp=dz2; - } - - if (index > 0) - { - for (int i = index - 1; i >= 0; --i) - { - double dz1 = p.z-fZs[i+1]; - double dz2 = p.z-fZs[i]; - safeR = SafetyFromOutsideSection(i,rho, p); - if (safeR < 0.) { safeDown=dz1; break; } - if(dz1 < dz2) { safeR = std::sqrt(safeR*safeR+dz1*dz1); } - else { safeR = std::sqrt(safeR*safeR+dz1*dz1); } - if (safeR < dz1) { safeDown = safeR; break; } - if (safeR < dz2) { safeDown = safeR; break; } - safeDown=dz2; - } - } - if (safeUp < minSafety) minSafety=safeUp; - if (safeDown < minSafety) minSafety=safeDown; - - return minSafety; -} - -double UPolycone::SafetyFromOutside(const UVector3& p, bool aAccurate) const -{ - if (!aAccurate) - return enclosingCylinder->SafetyFromOutside(p); - - int index = GetSection(p.z); - double minSafety = SafetyFromOutsideSection(index, p); - if (minSafety < 1e-6) return minSafety; - - double zbase = fZs[index + 1]; - for (int i = index + 1; i <= fMaxSection; ++i) - { - double dz = fZs[i] - zbase; - if (dz >= minSafety) break; - double safety = SafetyFromOutsideSection(i, p); - if (safety < minSafety) minSafety = safety; - } - - zbase = fZs[index - 1]; - for (int i = index - 1; i >= 0; --i) - { - double dz = zbase - fZs[i]; - if (dz >= minSafety) break; - double safety = SafetyFromOutsideSection(i, p); - if (safety < minSafety) minSafety = safety; - } - return minSafety; -} - -bool UPolycone::Normal(const UVector3& p, UVector3& n) const -{ - double htolerance = 0.5 * fgTolerance; - int index = GetSection(p.z); - - EnumInside nextPos; - int nextSection; - - if (index > 0 && p.z - fZs[index] < htolerance) - { - nextSection = index - 1; - nextPos = InsideSection(nextSection, p); - } - else if (index < fMaxSection && fZs[index + 1] - p.z < htolerance) - { - nextSection = index + 1; - nextPos = InsideSection(nextSection, p); - } - else - { - const UPolyconeSection& section = fSections[index]; - UVector3 ps(p.x, p.y, p.z - section.shift); - bool res = section.solid->Normal(ps, n); - - return res; - - // the code bellow is not used can be deleted - - nextPos = section.solid->Inside(ps); - if (nextPos == eSurface) - { - return res; - } - else - { - //TODO: here should be implementation for case point was not on surface. We would have to look also at other sections. It is not clear if it is possible to solve this problem at all, since we would need precise safety... If it is outside, than it might be OK, but if it is inside..., than I beleive we do not have precise safety - - // ... or we should at least warn that this case is not supported. actually, - // i do not see any algorithm which would obtain right normal of point closest to surface.; - - return false; - } - } - - // even if it says we are on the surface, actually it do not have to be - -// "TODO special case when point is on the border of two z-sections", -// "we should implement this after safety's"; - - EnumInside pos = InsideSection(index, p); - - if (nextPos == eInside) - { - //UVector3 n; - NormalSection(index, p, n); - return false; - } - - if (pos == eSurface && nextPos == eSurface) - { - //UVector3 n, n2; - UVector3 n2; - NormalSection(index, p, n); - NormalSection(nextSection, p, n2); - if ((n + n2).Mag2() < 1000 * frTolerance) - { - // "we are inside. see TODO above"; - NormalSection(index, p, n); - return false; - } - } - - if (nextPos == eSurface || pos == eSurface) - { - if (pos != eSurface) index = nextSection; - bool res = NormalSection(index, p, n); - return res; - } - - NormalSection(index, p, n); - // "we are outside. see TODO above"; - return false; -} - - -void UPolycone::Extent(UVector3& aMin, UVector3& aMax) const -{ - double r = enclosingCylinder->radius; - aMin.Set(-r, -r, fZs.front()); - aMax.Set(r, r, fZs.back()); -} - -double UPolycone::Capacity() -{ - if (fCubicVolume != 0.) - { - ; - } - else - { - for (int i = 0; i < fMaxSection; i++) - { - UPolyconeSection& section = fSections[i]; - fCubicVolume += section.solid->Capacity(); - } - } - return fCubicVolume; -} - -double UPolycone::SurfaceArea() -{ - if (fSurfaceArea != 0) - { - ; - } - else - { - double Area = 0, totArea = 0; - int i = 0; - int numPlanes = fOriginalParameters->fNumZPlanes; - - - std::vector areas; // (numPlanes+1); - std::vector points; // (numPlanes-1); - - areas.push_back(UUtils::kPi * (UUtils::sqr(fOriginalParameters->Rmax[0]) - - UUtils::sqr(fOriginalParameters->Rmin[0]))); - - for (i = 0; i < numPlanes - 1; i++) - { - Area = (fOriginalParameters->Rmin[i] + fOriginalParameters->Rmin[i + 1]) - * std::sqrt(UUtils::sqr(fOriginalParameters->Rmin[i] - - fOriginalParameters->Rmin[i + 1]) + - UUtils::sqr(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i])); - - Area += (fOriginalParameters->Rmax[i] + fOriginalParameters->Rmax[i + 1]) - * std::sqrt(UUtils::sqr(fOriginalParameters->Rmax[i] - - fOriginalParameters->Rmax[i + 1]) + - UUtils::sqr(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i])); - - Area *= 0.5 * (endPhi - startPhi); - - if (startPhi == 0. && endPhi == 2 * UUtils::kPi) - { - Area += std::fabs(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i]) * - (fOriginalParameters->Rmax[i] - + fOriginalParameters->Rmax[i + 1] - - fOriginalParameters->Rmin[i] - - fOriginalParameters->Rmin[i + 1]); - } - areas.push_back(Area); - totArea += Area; - } - - areas.push_back(UUtils::kPi * (UUtils::sqr(fOriginalParameters->Rmax[numPlanes - 1]) - - UUtils::sqr(fOriginalParameters->Rmin[numPlanes - 1]))); - - totArea += (areas[0] + areas[numPlanes]); - fSurfaceArea = totArea; - - } - - return fSurfaceArea; -} - -///////////////////////////////////////////////////////////////////////// -// -// GetPointOnSurface -// -// GetPointOnCone -// -// Auxiliary method for Get Point On Surface -// -UVector3 UPolycone::GetPointOnCone(double fRmin1, double fRmax1, - double fRmin2, double fRmax2, - double zOne, double zTwo, - double& totArea) const -{ - // declare working variables - // - double Aone, Atwo, Afive, phi, zRand, fDPhi, cosu, sinu; - double rRand1, rmin, rmax, chose, rone, rtwo, qone, qtwo; - double fDz = (zTwo - zOne) / 2., afDz = std::fabs(fDz); - UVector3 point, offset = UVector3(0., 0., 0.5 * (zTwo + zOne)); - fDPhi = endPhi - startPhi; - rone = (fRmax1 - fRmax2) / (2.*fDz); - rtwo = (fRmin1 - fRmin2) / (2.*fDz); - if (fRmax1 == fRmax2) - { - qone = 0.; - } - else - { - qone = fDz * (fRmax1 + fRmax2) / (fRmax1 - fRmax2); - } - if (fRmin1 == fRmin2) - { - qtwo = 0.; - } - else - { - qtwo = fDz * (fRmin1 + fRmin2) / (fRmin1 - fRmin2); - } - Aone = 0.5 * fDPhi * (fRmax2 + fRmax1) * (UUtils::sqr(fRmin1 - fRmin2) + UUtils::sqr(zTwo - zOne)); - Atwo = 0.5 * fDPhi * (fRmin2 + fRmin1) * (UUtils::sqr(fRmax1 - fRmax2) + UUtils::sqr(zTwo - zOne)); - Afive = fDz * (fRmax1 - fRmin1 + fRmax2 - fRmin2); - totArea = Aone + Atwo + 2.*Afive; - - phi = UUtils::Random(startPhi, endPhi); - cosu = std::cos(phi); - sinu = std::sin(phi); - - - if ((startPhi == 0) && (endPhi == 2 * UUtils::kPi)) - { - Afive = 0; - } - chose = UUtils::Random(0., Aone + Atwo + 2.*Afive); - if ((chose >= 0) && (chose < Aone)) - { - if (fRmax1 != fRmax2) - { - zRand = UUtils::Random(-1.*afDz, afDz); - point = UVector3(rone * cosu * (qone - zRand), - rone * sinu * (qone - zRand), zRand); - } - else - { - point = UVector3(fRmax1 * cosu, fRmax1 * sinu, - UUtils::Random(-1.*afDz, afDz)); - - } - } - else if (chose >= Aone && chose < Aone + Atwo) - { - if (fRmin1 != fRmin2) - { - zRand = UUtils::Random(-1.*afDz, afDz); - point = UVector3(rtwo * cosu * (qtwo - zRand), - rtwo * sinu * (qtwo - zRand), zRand); - - } - else - { - point = UVector3(fRmin1 * cosu, fRmin1 * sinu, - UUtils::Random(-1.*afDz, afDz)); - } - } - else if ((chose >= Aone + Atwo + Afive) && (chose < Aone + Atwo + 2.*Afive)) - { - zRand = UUtils::Random(-1.*afDz, afDz); - rmin = fRmin2 - ((zRand - fDz) / (2.*fDz)) * (fRmin1 - fRmin2); - rmax = fRmax2 - ((zRand - fDz) / (2.*fDz)) * (fRmax1 - fRmax2); - rRand1 = std::sqrt(UUtils::Random() * (UUtils::sqr(rmax) - UUtils::sqr(rmin)) + UUtils::sqr(rmin)); - point = UVector3(rRand1 * std::cos(startPhi), - rRand1 * std::sin(startPhi), zRand); - } - else - { - zRand = UUtils::Random(-1.*afDz, afDz); - rmin = fRmin2 - ((zRand - fDz) / (2.*fDz)) * (fRmin1 - fRmin2); - rmax = fRmax2 - ((zRand - fDz) / (2.*fDz)) * (fRmax1 - fRmax2); - rRand1 = std::sqrt(UUtils::Random() * (UUtils::sqr(rmax) - UUtils::sqr(rmin)) + UUtils::sqr(rmin)); - point = UVector3(rRand1 * std::cos(endPhi), - rRand1 * std::sin(endPhi), zRand); - - } - - return point + offset; -} - - -// -// GetPointOnTubs -// -// Auxiliary method for GetPoint On Surface -// -UVector3 UPolycone::GetPointOnTubs(double fRMin, double fRMax, - double zOne, double zTwo, - double& totArea) const -{ - double xRand, yRand, zRand, phi, cosphi, sinphi, chose, - aOne, aTwo, aFou, rRand, fDz, fSPhi, fDPhi; - fDz = std::fabs(0.5 * (zTwo - zOne)); - fSPhi = startPhi; - fDPhi = endPhi - startPhi; - - aOne = 2.*fDz * fDPhi * fRMax; - aTwo = 2.*fDz * fDPhi * fRMin; - aFou = 2.*fDz * (fRMax - fRMin); - totArea = aOne + aTwo + 2.*aFou; - phi = UUtils::Random(startPhi, endPhi); - cosphi = std::cos(phi); - sinphi = std::sin(phi); - rRand = fRMin + (fRMax - fRMin) * std::sqrt(UUtils::Random()); - - if (startPhi == 0 && endPhi == 2 * UUtils::kPi) - aFou = 0; - - chose = UUtils::Random(0., aOne + aTwo + 2.*aFou); - if ((chose >= 0) && (chose < aOne)) - { - xRand = fRMax * cosphi; - yRand = fRMax * sinphi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand + 0.5 * (zTwo + zOne)); - } - else if ((chose >= aOne) && (chose < aOne + aTwo)) - { - xRand = fRMin * cosphi; - yRand = fRMin * sinphi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand + 0.5 * (zTwo + zOne)); - } - else if ((chose >= aOne + aTwo) && (chose < aOne + aTwo + aFou)) - { - xRand = rRand * std::cos(fSPhi + fDPhi); - yRand = rRand * std::sin(fSPhi + fDPhi); - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand + 0.5 * (zTwo + zOne)); - } - - // else - - xRand = rRand * std::cos(fSPhi + fDPhi); - yRand = rRand * std::sin(fSPhi + fDPhi); - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand + 0.5 * (zTwo + zOne)); -} - - -// -// GetPointOnRing -// -// Auxiliary method for GetPoint On Surface -// -UVector3 UPolycone::GetPointOnRing(double fRMin1, double fRMax1, - double fRMin2, double fRMax2, - double zOne) const -{ - double xRand, yRand, phi, cosphi, sinphi, rRand1, rRand2, A1, Atot, rCh; - phi = UUtils::Random(startPhi, endPhi); - cosphi = std::cos(phi); - sinphi = std::sin(phi); - - if (fRMin1 == fRMin2) - { - rRand1 = fRMin1; - A1 = 0.; - } - else - { - rRand1 = UUtils::Random(fRMin1, fRMin2); - A1 = std::fabs(fRMin2 * fRMin2 - fRMin1 * fRMin1); - } - if (fRMax1 == fRMax2) - { - rRand2 = fRMax1; - Atot = A1; - } - else - { - rRand2 = UUtils::Random(fRMax1, fRMax2); - Atot = A1 + std::fabs(fRMax2 * fRMax2 - fRMax1 * fRMax1); - } - rCh = UUtils::Random(0., Atot); - - if (rCh > A1) - { - rRand1 = rRand2; - } - - xRand = rRand1 * cosphi; - yRand = rRand1 * sinphi; - - return UVector3(xRand, yRand, zOne); -} - - -// -// GetPointOnCut -// -// Auxiliary method for Get Point On Surface -// -UVector3 UPolycone::GetPointOnCut(double fRMin1, double fRMax1, - double fRMin2, double fRMax2, - double zOne, double zTwo, - double& totArea) const -{ - if (zOne == zTwo) - { - return GetPointOnRing(fRMin1, fRMax1, fRMin2, fRMax2, zOne); - } - if ((fRMin1 == fRMin2) && (fRMax1 == fRMax2)) - { - return GetPointOnTubs(fRMin1, fRMax1, zOne, zTwo, totArea); - } - return GetPointOnCone(fRMin1, fRMax1, fRMin2, fRMax2, zOne, zTwo, totArea); -} - - -// -// GetPointOnSurface -// -UVector3 UPolycone::GetPointOnSurface() const -{ - double Area = 0, totArea = 0, Achose1 = 0, Achose2 = 0, phi, cosphi, sinphi, rRand; - int i = 0; - int numPlanes = fOriginalParameters->fNumZPlanes; - - phi = UUtils::Random(startPhi, endPhi); - cosphi = std::cos(phi); - sinphi = std::sin(phi); - - rRand = fOriginalParameters->Rmin[0] + - ((fOriginalParameters->Rmax[0] - fOriginalParameters->Rmin[0]) - * std::sqrt(UUtils::Random())); - - std::vector areas; // (numPlanes+1); - std::vector points; // (numPlanes-1); - - areas.push_back(UUtils::kPi * (UUtils::sqr(fOriginalParameters->Rmax[0]) - - UUtils::sqr(fOriginalParameters->Rmin[0]))); - - for (i = 0; i < numPlanes - 1; i++) - { - Area = (fOriginalParameters->Rmin[i] + fOriginalParameters->Rmin[i + 1]) - * std::sqrt(UUtils::sqr(fOriginalParameters->Rmin[i] - - fOriginalParameters->Rmin[i + 1]) + - UUtils::sqr(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i])); - - Area += (fOriginalParameters->Rmax[i] + fOriginalParameters->Rmax[i + 1]) - * std::sqrt(UUtils::sqr(fOriginalParameters->Rmax[i] - - fOriginalParameters->Rmax[i + 1]) + - UUtils::sqr(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i])); - - Area *= 0.5 * (endPhi - startPhi); - - if (startPhi == 0. && endPhi == 2 * UUtils::kPi) - { - Area += std::fabs(fOriginalParameters->fZValues[i + 1] - - fOriginalParameters->fZValues[i]) * - (fOriginalParameters->Rmax[i] - + fOriginalParameters->Rmax[i + 1] - - fOriginalParameters->Rmin[i] - - fOriginalParameters->Rmin[i + 1]); - } - areas.push_back(Area); - totArea += Area; - } - - areas.push_back(UUtils::kPi * (UUtils::sqr(fOriginalParameters->Rmax[numPlanes - 1]) - - UUtils::sqr(fOriginalParameters->Rmin[numPlanes - 1]))); - - totArea += (areas[0] + areas[numPlanes]); - double chose = UUtils::Random(0., totArea); - - if ((chose >= 0.) && (chose < areas[0])) - { - return UVector3(rRand * cosphi, rRand * sinphi, - fOriginalParameters->fZValues[0]); - } - - for (i = 0; i < numPlanes - 1; i++) - { - Achose1 += areas[i]; - Achose2 = (Achose1 + areas[i + 1]); - if (chose >= Achose1 && chose < Achose2) - { - return GetPointOnCut(fOriginalParameters->Rmin[i], - fOriginalParameters->Rmax[i], - fOriginalParameters->Rmin[i + 1], - fOriginalParameters->Rmax[i + 1], - fOriginalParameters->fZValues[i], - fOriginalParameters->fZValues[i + 1], Area); - } - } - - rRand = fOriginalParameters->Rmin[numPlanes - 1] + - ((fOriginalParameters->Rmax[numPlanes - 1] - fOriginalParameters->Rmin[numPlanes - 1]) - * std::sqrt(UUtils::Random())); - - return UVector3(rRand * cosphi, rRand * sinphi, - fOriginalParameters->fZValues[numPlanes - 1]); - -} - -// -// UPolyconeHistorical stuff -// - -UPolyconeHistorical::UPolyconeHistorical() - : fStartAngle(0.), fOpeningAngle(0.), fNumZPlanes(0), - fZValues(0), Rmin(0), Rmax(0) -{ -} - -UPolyconeHistorical::~UPolyconeHistorical() -{ -} - -UPolyconeHistorical:: -UPolyconeHistorical(const UPolyconeHistorical& source) -{ - fStartAngle = source.fStartAngle; - fOpeningAngle = source.fOpeningAngle; - fNumZPlanes = source.fNumZPlanes; - - fZValues.resize(fNumZPlanes); - Rmin.resize(fNumZPlanes); - Rmax.resize(fNumZPlanes); - - for (int i = 0; i < fNumZPlanes; i++) - { - fZValues[i] = source.fZValues[i]; - Rmin[i] = source.Rmin[i]; - Rmax[i] = source.Rmax[i]; - } -} - -UPolyconeHistorical& -UPolyconeHistorical::operator=(const UPolyconeHistorical& right) -{ - if (&right == this) return *this; - - if (&right) - { - fStartAngle = right.fStartAngle; - fOpeningAngle = right.fOpeningAngle; - fNumZPlanes = right.fNumZPlanes; - - fZValues.resize(fNumZPlanes); - Rmin.resize(fNumZPlanes); - Rmax.resize(fNumZPlanes); - - for (int i = 0; i < fNumZPlanes; i++) - { - fZValues[i] = right.fZValues[i]; - Rmin[i] = right.Rmin[i]; - Rmax[i] = right.Rmax[i]; - } - } - return *this; -} - -VUSolid* UPolycone::Clone() const -{ - return new UPolycone(*this); -} -// -// Copy constructor -// -UPolycone::UPolycone(const UPolycone& source): VUSolid(source) -{ - CopyStuff(source); -} - - -// -// Assignment operator -// -UPolycone& UPolycone::operator=(const UPolycone& source) -{ - if (this == &source) return *this; - - //VUSolid::operator=( source ); - - //delete [] corners; - - delete enclosingCylinder; - - CopyStuff(source); - - return *this; -} -// -// CopyStuff -// -void UPolycone::CopyStuff(const UPolycone& source) -{ - // - // Simple stuff - // - - startPhi = source.startPhi; - endPhi = source.endPhi; - phiIsOpen = source.phiIsOpen; - fCubicVolume = source.fCubicVolume; - fSurfaceArea = source.fSurfaceArea; - fBox = source.fBox; - // - // The array of planes - // - fOriginalParameters = source.fOriginalParameters; - // - // Enclosing cylinder - // - enclosingCylinder = new UEnclosingCylinder(*source.enclosingCylinder); -} -// -// Get Entity Type -// -UGeometryType UPolycone::GetEntityType() const -{ - return "Polycone"; -} -// -// Set Original Parameters -// -bool UPolycone::SetOriginalParameters(UReduciblePolygon* rz) -{ - int numPlanes = (int)numCorner; - bool isConvertible = true; - double Zmax = rz->Bmax(); - rz->StartWithZMin(); - - // Prepare vectors for storage - // - std::vector Z; - std::vector Rmin; - std::vector Rmax; - - int countPlanes = 1; - int icurr = 0; - int icurl = 0; - - // first plane Z=Z[0] - // - Z.push_back(corners[0].z); - double Zprev = Z[0]; - if (Zprev == corners[1].z) - { - Rmin.push_back(corners[0].r); - Rmax.push_back(corners[1].r); - icurr = 1; - } - else if (Zprev == corners[numPlanes - 1].z) - { - Rmin.push_back(corners[numPlanes - 1].r); - Rmax.push_back(corners[0].r); - icurl = numPlanes - 1; - } - else - { - Rmin.push_back(corners[0].r); - Rmax.push_back(corners[0].r); - } - - // next planes until last - // - int inextr = 0, inextl = 0; - for (int i = 0; i < numPlanes - 2; i++) - { - inextr = 1 + icurr; - inextl = (icurl <= 0) ? numPlanes - 1 : icurl - 1; - - if ((corners[inextr].z >= Zmax) & (corners[inextl].z >= Zmax)) - { - break; - } - - double Zleft = corners[inextl].z; - double Zright = corners[inextr].z; - if (Zright > Zleft) - { - Z.push_back(Zleft); - countPlanes++; - double difZr = corners[inextr].z - corners[icurr].z; - double difZl = corners[inextl].z - corners[icurl].z; - - if (std::fabs(difZl) < frTolerance) - { - if (corners[inextl].r >= corners[icurl].r) - { - Rmin.push_back(corners[icurl].r); - Rmax.push_back(Rmax[countPlanes - 2]); - Rmax[countPlanes - 2] = corners[icurl].r; - } - else - { - Rmin.push_back(corners[inextl].r); - Rmax.push_back(corners[icurl].r); - } - } - else if (difZl >= frTolerance) - { - Rmin.push_back(corners[inextl].r); - Rmax.push_back(corners[icurr].r + (Zleft - corners[icurr].z) / difZr - * (corners[inextr].r - corners[icurr].r)); - } - else - { - isConvertible = false; - break; - } - icurl = (icurl == 0) ? numPlanes - 1 : icurl - 1; - } - else if (std::fabs(Zright - Zleft) < frTolerance) // Zright=Zleft - { - Z.push_back(Zleft); - countPlanes++; - icurr++; - - icurl = (icurl == 0) ? numPlanes - 1 : icurl - 1; - - Rmin.push_back(corners[inextl].r); - Rmax.push_back(corners[inextr].r); - } - else // Zright= corners[icurr].r) - { - Rmin.push_back(corners[icurr].r); - Rmax.push_back(corners[inextr].r); - } - else - { - Rmin.push_back(corners[inextr].r); - Rmax.push_back(corners[icurr].r); - Rmax[countPlanes - 2] = corners[inextr].r; - } - icurr++; - } // plate - else if (difZr >= frTolerance) - { - if (std::fabs(difZl) < frTolerance) - { - Rmax.push_back(corners[inextr].r); - Rmin.push_back(corners[icurr].r); - } - else - { - Rmax.push_back(corners[inextr].r); - Rmin.push_back(corners[icurl].r + (Zright - corners[icurl].z) / difZl - * (corners[inextl].r - corners[icurl].r)); - } - icurr++; - } - else - { - isConvertible = false; - break; - } - } - } // end for loop - - // last plane Z=Zmax - // - Z.push_back(Zmax); - countPlanes++; - inextr = 1 + icurr; - inextl = (icurl <= 0) ? numPlanes - 1 : icurl - 1; - - if (corners[inextr].z == corners[inextl].z) - { - Rmax.push_back(corners[inextr].r); - Rmin.push_back(corners[inextl].r); - } - else - { - Rmax.push_back(corners[inextr].r); - Rmin.push_back(corners[inextl].r); - } - - // Set original parameters Rmin,Rmax,Z - // - if (isConvertible) - { - fOriginalParameters = new UPolyconeHistorical; - fOriginalParameters->fZValues.resize(numPlanes); - fOriginalParameters->Rmin.resize(numPlanes); - fOriginalParameters->Rmax.resize(numPlanes); - - for (int j = 0; j < countPlanes; j++) - { - fOriginalParameters->fZValues[j] = Z[j]; - fOriginalParameters->Rmax[j] = Rmax[j]; - fOriginalParameters->Rmin[j] = Rmin[j]; - } - fOriginalParameters->fStartAngle = startPhi; - fOriginalParameters->fOpeningAngle = endPhi - startPhi; - fOriginalParameters->fNumZPlanes = countPlanes; - - } - else // Set parameters(r,z) with Rmin==0 as convention - { - std::ostringstream message; - message << "Polycone " << GetName() << std::endl - << "cannot be converted to Polycone with (Rmin,Rmaz,Z) parameters!"; - UUtils::Exception("UPolycone::SetOriginalParameters()", "GeomSolids0002", - Warning, 1, "can not convert"); - - fOriginalParameters = new UPolyconeHistorical; - - fOriginalParameters->fZValues.resize(numPlanes); - fOriginalParameters->Rmin.resize(numPlanes); - fOriginalParameters->Rmax.resize(numPlanes); - - for (int j = 0; j < numPlanes; j++) - { - fOriginalParameters->fZValues[j] = corners[j].z; - fOriginalParameters->Rmax[j] = corners[j].r; - fOriginalParameters->Rmin[j] = 0.0; - } - fOriginalParameters->fStartAngle = startPhi; - fOriginalParameters->fOpeningAngle = endPhi - startPhi; - fOriginalParameters->fNumZPlanes = numPlanes; - } - return isConvertible; -} -// -// Reset -// -void UPolycone::Reset() -{ - // - // Clear old setup - // - delete enclosingCylinder; - - fCubicVolume = 0; - fSurfaceArea = 0; - double phiStart=fOriginalParameters->fStartAngle; - double* Z, *R1, *R2; - int num = fOriginalParameters->fNumZPlanes; - Z = new double[num]; - R1 = new double[num]; - R2 = new double[num]; - for (int i = 0; i < num; i++) - { - Z[i] = fOriginalParameters->fZValues[i]; - R1[i] = fOriginalParameters->Rmin[i]; - R2[i] = fOriginalParameters->Rmax[i]; - } - - Init(phiStart, phiStart+ fOriginalParameters->fOpeningAngle, num, Z, R1, R2); - delete [] R1; - delete [] Z; - delete [] R2; -} +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UPolycone +// +// 19.04.13 Marek Gayer +// Created from original implementation in Geant4 +// -------------------------------------------------------------------- + +#include "UUtils.hh" +#include +#include +#include +#include "UPolycone.hh" + +#include "UEnclosingCylinder.hh" +#include "UReduciblePolygon.hh" + +#include "UTubs.hh" +#include "UCons.hh" +#include "UTransform3D.hh" + +using namespace std; + +UPolycone::UPolycone(const std::string& name, + double phiStart, + double phiTotal, + int numZPlanes, + const double zPlane[], + const double rInner[], + const double rOuter[]) + : VUSolid(name) //, fNumSides(0) +{ + fCubicVolume = 0; + fSurfaceArea = 0; + Init(phiStart, phiTotal, numZPlanes, zPlane, rInner, rOuter); + +} + +UPolycone::UPolycone(const std::string& name, + double phiStart, + double phiTotal, + int numRZ, + const double r[], + const double z[]) + : VUSolid(name) +{ + UReduciblePolygon* rz = new UReduciblePolygon(r, z, numRZ); + + // Create( phiStart, phiTotal, rz ); + + // Set original_parameters struct for consistency + // + + bool convertible = SetOriginalParameters(rz); + + if (!convertible) + { + std::ostringstream message; + message << "Polycone " << GetName() << "cannot be converted" << std::endl + << "to Polycone with (Rmin,Rmaz,Z) parameters! Use GenericPolycone" ; + UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", + FatalError, 1, message.str().c_str()); + } + else + { + std::cout << "INFO: Converting polycone " << GetName() << std::endl + << "to optimized polycone with (Rmin,Rmaz,Z) parameters !" + << std::endl; + double* Z, *R1, *R2; + int num = fOriginalParameters->fNumZPlanes; + Z = new double[num]; + R1 = new double[num]; + R2 = new double[num]; + for (int i = 0; i < num; i++) + { + Z[i] = fOriginalParameters->fZValues[i]; + R1[i] = fOriginalParameters->Rmin[i]; + R2[i] = fOriginalParameters->Rmax[i]; + } + + delete(fOriginalParameters); + Init(phiStart, phiTotal, num, Z, R1, R2); + delete [] R1; + delete [] Z; + delete [] R2; + } + + delete rz; +} + + +// +// Constructor (GEANT3 style parameters) +// +void UPolycone::Init(double phiStart, + double phiTotal, + int numZPlanes, + const double zPlane[], + const double rInner[], + const double rOuter[]) +{ + //Convertion for angles + + if (phiTotal <= 0 || phiTotal > UUtils::kTwoPi-1E-10) + { + phiIsOpen=false; + startPhi = 0; + endPhi = UUtils::kTwoPi; + } + else + { + // + // Convert phi into our convention + // + phiIsOpen=true; + startPhi = phiStart; + while( startPhi < 0 ) startPhi += UUtils::kTwoPi; + + endPhi = phiStart+phiTotal; + while( endPhi < startPhi ) endPhi += UUtils::kTwoPi; + + + } + + // Set Parameters + fOriginalParameters = new UPolyconeHistorical(); + fOriginalParameters->fStartAngle = startPhi; + fOriginalParameters->fOpeningAngle = endPhi-startPhi; + fOriginalParameters->fNumZPlanes = numZPlanes; + fOriginalParameters->fZValues.resize(numZPlanes); + fOriginalParameters->Rmin.resize(numZPlanes); + fOriginalParameters->Rmax.resize(numZPlanes); + + // Calculate RMax of Polycone in order to determine convexity of sections + // + double RMaxextent=rOuter[0]; + for (int j=1; j < numZPlanes; j++) + { + if (rOuter[j] > RMaxextent) RMaxextent=rOuter[j]; + if (rInner[j]>rOuter[j]) + { + std::ostringstream message; + message << "Cannot create Polycone with rInner > rOuter for the same Z" + << std::endl + << " rInner > rOuter for the same Z !" << std::endl + << " rMin[" << j << "] = " << rInner[j] + << " -- rMax[" << j << "] = " << rOuter[j]; + UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", + FatalErrorInArguments, 1, message.str().c_str()); + } + } + // + double prevZ = zPlane[0], prevRmax = 0, prevRmin = 0; + int dirZ = 1; + if (zPlane[1] < zPlane[0])dirZ = -1; +// int curSolid = 0; + + int i; + for (i = 0; i < numZPlanes; i++) + { + if ((i < numZPlanes - 1) && (zPlane[i] == zPlane[i + 1])) + { + if ((rInner[i] > rOuter[i + 1]) + || (rInner[i + 1] > rOuter[i])) + { + + std::ostringstream message; + message << "Cannot create a Polycone with no contiguous segments." + << std::endl + << "Segments are not contiguous !" << std::endl + << " rMin[" << i << "] = " << rInner[i] + << " -- rMax[" << i + 1 << "] = " << rOuter[i + 1] << std::endl + << " rMin[" << i + 1 << "] = " << rInner[i + 1] + << " -- rMax[" << i << "] = " << rOuter[i]; + UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", + FatalErrorInArguments, 1, message.str().c_str()); + } + } + + + + double rMin = rInner[i]; + double rMax = rOuter[i]; + double z = zPlane[i]; + + if (i > 0) + { + if (((z > prevZ)&&(dirZ>0))||((z < prevZ)&&(dirZ<0))) + { + if (dirZ*(z-prevZ)< 0) + { + std::ostringstream message; + message << "Cannot create a Polycone with different Z directions.Use GenericPolycone." + << std::endl + << "ZPlane is changing direction !" << std::endl + << " zPlane[0] = " << zPlane[0] + << " -- zPlane[1] = " << zPlane[1] << std::endl + << " zPlane[" << i - 1 << "] = " << zPlane[i - 1] + << " -- rPlane[" << i << "] = " << zPlane[i]; + UUtils::Exception("UPolycone::UPolycone()", "GeomSolids0002", + FatalErrorInArguments, 1, message.str().c_str()); + + + + } + VUSolid* solid; + double dz = (z - prevZ)*dirZ / 2; + + bool tubular = (rMin == prevRmin && prevRmax == rMax); + +// if (fNumSides == 0) + { + if (tubular) + { + solid = new UTubs("", rMin, rMax, dz, phiStart, phiTotal); + } + else + { + solid = new UCons("", prevRmin, prevRmax, rMin, rMax, dz, phiStart, phiTotal); + } + } +// else +// { +// solid = new UHedra("", prevRmin, prevRmax, rMin, rMax, dz, phiStart, phiTotal, fNumSides); +// } + + fZs.push_back(z); + + int zi = fZs.size() - 1; + double shift = fZs[zi - 1] + 0.5 * (fZs[zi] - fZs[zi - 1]); + + UPolyconeSection section; + section.shift = shift; + section.tubular = tubular; + section.solid = solid; + if(tubular) + { + if (rMax < RMaxextent) { section.convex = false;} + else { section.convex = true;} + } + else + { + if ((rMaxfZValues[i] = zPlane[i]; + fOriginalParameters->Rmin[i] = rInner[i]; + fOriginalParameters->Rmax[i] = rOuter[i]; + + prevZ = z; + prevRmin = rMin; + prevRmax = rMax; + } + + fMaxSection = fZs.size() - 2; + + // + // Build RZ polygon using special PCON/PGON GEANT3 constructor + // + UReduciblePolygon* rz = new UReduciblePolygon(rInner, rOuter, zPlane, numZPlanes); + + double mxy = rz->Amax(); +// double alfa = UUtils::kPi / fNumSides; + + double r = rz->Amax(); +// +// Perform checks of rz values +// + if (rz->Amin() < 0.0) + { + std::ostringstream message; + message << "Illegal input parameters - " << GetName() << std::endl + << " All R values must be >= 0 !"; + UUtils::Exception("UPolycone::Init()", "GeomSolids0002", + FatalErrorInArguments,1, message.str().c_str()); + } + + + mxy += fgTolerance; + + fBox.Set(mxy, mxy, (rz->Bmax() - rz->Bmin()) / 2); + + // + // Make enclosingCylinder + // + + enclosingCylinder = new UEnclosingCylinder(r, rz->Bmax(), rz->Bmin(), phiIsOpen, phiStart, phiTotal); + + delete rz; +} + + +/* +// +// Constructor (generic parameters) +// +UPolycone3::UPolycone3( const std::string& name, + double phiStart, + double phiTotal, + int numRZ, + const double r[], + const double z[] ) + : VUSolid( name ) +{ + UReduciblePolygon *rz = new UReduciblePolygon( r, z, numRZ ); + + box.Set(rz->Amax(), rz->Amax(), (rz->Bmax() - rz->Bmin()) /2); + + // Set fOriginalParameters struct for consistency + // + SetOriginalParameters(); + + delete rz; +} +*/ + + +// +// Destructor +// +UPolycone::~UPolycone() +{ + //delete [] corners; + //delete fOriginalParameters; +} + + + +// +// Stream object contents to an output stream +// +std::ostream& UPolycone::StreamInfo(std::ostream& os) const +{ + int oldprc = os.precision(16); + os << "-----------------------------------------------------------\n" + << " *** Dump for solid - " << GetName() << " ***\n" + << " ===================================================\n" + << " Solid type: UPolycone\n" + << " Parameters: \n" + << " starting phi angle : " << startPhi / (UUtils::kPi / 180.0) << " degrees \n" + << " ending phi angle : " << endPhi / (UUtils::kPi / 180.0) << " degrees \n"; + int i = 0; + int numPlanes = fOriginalParameters->fNumZPlanes; + os << " number of Z planes: " << numPlanes << "\n" + << " Z values: \n"; + for (i = 0; i < numPlanes; i++) + { + os << " Z plane " << i << ": " + << fOriginalParameters->fZValues[i] << "\n"; + } + os << " Tangent distances to inner surface (Rmin): \n"; + for (i = 0; i < numPlanes; i++) + { + os << " Z plane " << i << ": " + << fOriginalParameters->Rmin[i] << "\n"; + } + os << " Tangent distances to outer surface (Rmax): \n"; + for (i = 0; i < numPlanes; i++) + { + os << " Z plane " << i << ": " + << fOriginalParameters->Rmax[i] << "\n"; + } + os << "-----------------------------------------------------------\n"; + os.precision(oldprc); + + return os; +} + +VUSolid::EnumInside UPolycone::InsideSection(int index, const UVector3& p) const +{ + const UPolyconeSection& section = fSections[index]; + UVector3 ps(p.x, p.y, p.z - section.shift); + +// if (fNumSides) return section.solid->Inside(ps); + + double rMinPlus, rMaxPlus , rMinMinus, rMaxMinus; + double dz; + double halfTolerance = fgTolerance * 0.5; + + double r2 = p.x * p.x + p.y * p.y; + + if (section.tubular) + { + UTubs* tubs = (UTubs*) section.solid; + + rMaxPlus = tubs->GetRMax()+ halfTolerance; + rMinPlus = tubs->GetRMin() + halfTolerance; + rMinMinus = tubs->GetRMin() - halfTolerance; + rMaxMinus = tubs->GetRMax() - halfTolerance; + dz = tubs->GetDz();//GetZHalfLength(); + } + else + { + UCons* cons = (UCons*) section.solid; + + double rMax1 = cons->GetRmax1(); + double rMax2 = cons->GetRmax2(); + double rMin1 = cons->GetRmin1(); + double rMin2 = cons->GetRmin2(); + dz = cons->GetDz(); + double ratio = (ps.z + dz) / (2 * dz); + rMinPlus = rMin1 + (rMin2 - rMin1) * ratio + halfTolerance; + rMaxPlus = rMax1 + (rMax2 - rMax1) * ratio + halfTolerance; + rMinMinus = rMinPlus - 2*halfTolerance; + rMaxMinus = rMaxPlus - 2*halfTolerance; + } + + if (r2 < 1e-10) + { + EnumInside pos = eOutside; + if ((!phiIsOpen) && (rMinMinus <= 0)) + { + if(pos !=eSurface) { pos = eInside; } + } + if (rMinMinus <= 0) { pos = eSurface; } + if ( ((pos == eInside) || (pos == eSurface)) + && ((ps.z < -dz+halfTolerance) || (ps.z > dz-halfTolerance))) + { + pos = eSurface; + } + return pos; + } + + if ( (r2 < rMinMinus*rMinMinus) || (r2 > rMaxPlus*rMaxPlus) ) + { + return eOutside; + } + if ( (r2 < rMinPlus*rMinPlus) || (r2 > rMaxMinus*rMaxMinus) ) + { + if(! phiIsOpen) { return eSurface; } + } + + if (! phiIsOpen) + { + if ( (ps.z < -dz+halfTolerance) || (ps.z > dz-halfTolerance) ) + { + return eSurface; + } + return eInside; + } + double phi = std::atan2(p.y, p.x); // * UUtils::kTwoPi; + + if ( (phi < 0) || (endPhi > UUtils::kTwoPi) ) { phi += UUtils::kTwoPi; } + + double ddp = phi - startPhi; + if (ddp < 0) ddp += UUtils::kTwoPi; + + if ( (phi <= endPhi+ frTolerance) && (phi>= startPhi-frTolerance) ) + { + if ( (ps.z < -dz+halfTolerance) || (ps.z > dz-halfTolerance) ) + { + return eSurface; + } + if ( (r2 < rMinPlus*rMinPlus) || (r2 > rMaxMinus*rMaxMinus) ) + { + return eSurface; + } + if (std::fabs(endPhi - phi) < frTolerance) + { + return eSurface; + } + if (std::fabs(startPhi - phi) < frTolerance) + { + return eSurface; + } + return eInside; + } + return eOutside; +} + + +VUSolid::EnumInside UPolycone::Inside(const UVector3& p) const +{ + double shift = fZs[0] + fBox.GetZHalfLength(); + UVector3 pb(p.x, p.y, p.z - shift); + + if (fBox.Inside(pb) == eOutside) + { + return eOutside; + } + + static const double htolerance = 0.5 * fgTolerance; + int index = GetSection(p.z); + + EnumInside pos = InsideSection(index, p); + if (pos == eInside) { return eInside; } + + int nextSection; + EnumInside nextPos; + + if (index > 0 && p.z - fZs[index] < htolerance) + { + nextSection = index - 1; + nextPos = InsideSection(nextSection, p); + } + else if (index < fMaxSection && fZs[index + 1] - p.z < htolerance) + { + nextSection = index + 1; + nextPos = InsideSection(nextSection, p); + } + else + { + return pos; + } + + if (nextPos == eInside) { return eInside; } + + if (pos == eSurface && nextPos == eSurface) + { + UVector3 n, n2; + NormalSection(index, p, n); + NormalSection(nextSection, p, n2); + if ((n + n2).Mag2() < 1000 * frTolerance) { return eInside; } + } + + return (nextPos == eSurface || pos == eSurface) ? eSurface : eOutside; +} + + +double UPolycone::DistanceToIn(const UVector3& p, + const UVector3& v, double) const +{ + double shift = fZs[0] + fBox.GetZHalfLength(); + UVector3 pb(p.x, p.y, p.z - shift); + + double idistance; + + idistance = fBox.DistanceToIn(pb, v); + // using only box, this appears + // to be faster than: idistance = enclosingCylinder->DistanceTo(pb, v); + if (idistance >= UUtils::kInfinity) { return idistance; } + + // this line can be here or not. not a big difference in performance + // TODO: fix enclosingCylinder for polyhedra!!! - the current radius + // appears to be too small + // if (enclosingCylinder->ShouldMiss(p, v)) return UUtils::kInfinity; + + // this just takes too much time + // idistance = enclosingCylinder->DistanceTo(pb, v); + // if (idistance == UUtils::kInfinity) return idistance; + + pb = p + idistance * v; + int index = GetSection(pb.z); + pb = p; + int increment = (v.z > 0) ? 1 : -1; + if (std::fabs(v.z) < fgTolerance) increment = 0; + + double distance = UUtils::kInfinity; + do + { + const UPolyconeSection& section = fSections[index]; + pb.z -= section.shift; + distance = section.solid->DistanceToIn(pb, v); + if (distance < UUtils::kInfinity || !increment) + break; + index += increment; + pb.z += section.shift; + } + while (index >= 0 && index <= fMaxSection); + //if(Inside(p)==eInside)return UUtils::kInfinity; + return distance; +} + + +double UPolycone::DistanceToOut(const UVector3& p, const UVector3& v, + UVector3& n, bool& convex, double ) const +{ + UVector3 pn(p); + + if (fOriginalParameters->fNumZPlanes == 2) + { + const UPolyconeSection& section = fSections[0]; + pn.z -= section.shift; + return section.solid->DistanceToOut(pn, v, n, convex); + } + + int indexLow = GetSection(p.z-fgTolerance); + int indexHigh = GetSection(p.z+fgTolerance); + int index = 0; + + if ( indexLow != indexHigh ) // we are close to Surface, + { // section has to be identified + const UPolyconeSection& section = fSections[indexLow]; + pn.z -= section.shift; + if (section.solid->Inside(pn) == eOutside) + { + index=indexHigh; + } + else + { + index=indexLow; + } + pn.z=p.z; + } + else + { + index=indexLow; + } + double totalDistance = 0; + int increment = (v.z > 0) ? 1 : -1; + bool convexloc = true; + + UVector3 section_norm; + section_norm.Set(0); + int istep = 0; + do + { + const UPolyconeSection& section = fSections[index]; + + if (totalDistance != 0||(istep < 2)) + { + pn = p + (totalDistance ) * v; // point must be shifted, so it could + // eventually get into another solid + pn.z -= section.shift; + if (section.solid->Inside(pn) == eOutside) + { + break; + } + } + else + { + pn.z -= section.shift; + } + istep = istep+1; + double distance = section.solid-> DistanceToOut(pn, v, n, convexloc); + + if(std::fabs(distance) < 0.5*fgTolerance) // Section Surface case + { + int index1 = index; + if( ( index > 0) && ( index < fMaxSection ) ) + { + index1 += increment; + } + else + { + if( (index == 0) && ( increment > 0 ) ) { index1 += increment; } + if( (index == fMaxSection) && (increment<0) ) { index1 += increment;} + } + UVector3 pte = p+(totalDistance+distance)*v; + const UPolyconeSection& section1 = fSections[index1]; + pte.z -= section1.shift; + if (section1.solid->Inside(pte) == eOutside) + { + break; + } + } + + if ( (index < fMaxSection) && (index > 0 ) ) // Convexity + { + if((convexloc) && (section.convex)) + { + convexloc = true; + } + else + { + convexloc = false; + } + } + + totalDistance += distance; + index += increment; + } + while (index >= 0 && index <= fMaxSection); + + convex=convexloc; + if (convex) //Check final convexity for dz + { + pn = p + (totalDistance) * v; + double halfTolerance = 0.5*fgTolerance; + if( (index < fMaxSection) && (index > 0 ) ) + { + double dz1 = std::fabs(pn.z-fZs[index]); + double dz2 = std::fabs(pn.z-fZs[index+1]); + if(dz1 < halfTolerance) { convex=false; } + if(dz2 < halfTolerance) { convex=false; } + } + else + { + if(index>=fMaxSection) + { + if (std::fabs(pn.z-fZs[fMaxSection]) < halfTolerance) { convex=false; } + } + else + { + if(index<=0) + { + if (std::fabs(pn.z-fZs[1]) < halfTolerance) { convex=false;} + } + } + } + } + convex=false; + + return totalDistance; +} + + +double UPolycone::SafetyFromInside(const UVector3& p, bool) const +{ + int index = UVoxelizer::BinarySearch(fZs, p.z); + if (index < 0 || index > fMaxSection) return 0; + + double rho=std::sqrt(p.x*p.x+p.y*p.y); + double safeR = SafetyFromInsideSection(index,rho, p); + double safeDown = p.z-fZs[index]; + double safeUp = fZs[index+1]-p.z; + + double minSafety =safeR; + + if (minSafety == UUtils::kInfinity) return 0; + if (minSafety < 1e-6) return 0; + + for (int i = index + 1; i <= fMaxSection; ++i) + { + double dz1 = fZs[i] - p.z; + double dz2 = fZs[i+1] - p.z; + safeR = SafetyFromOutsideSection(i,rho, p); + if (safeR < 0.) { safeUp=dz1; break; } + if (dz1 < dz2) { safeR = std::sqrt(safeR*safeR+dz1*dz1); } + else {safeR = std::sqrt(safeR*safeR+dz1*dz1); } + if (safeR < dz1) { safeUp = safeR; break; } + if (safeR < dz2) { safeUp = safeR; break; } + safeUp=dz2; + } + + if (index > 0) + { + for (int i = index - 1; i >= 0; --i) + { + double dz1 = p.z-fZs[i+1]; + double dz2 = p.z-fZs[i]; + safeR = SafetyFromOutsideSection(i,rho, p); + if (safeR < 0.) { safeDown=dz1; break; } + if(dz1 < dz2) { safeR = std::sqrt(safeR*safeR+dz1*dz1); } + else { safeR = std::sqrt(safeR*safeR+dz1*dz1); } + if (safeR < dz1) { safeDown = safeR; break; } + if (safeR < dz2) { safeDown = safeR; break; } + safeDown=dz2; + } + } + if (safeUp < minSafety) minSafety=safeUp; + if (safeDown < minSafety) minSafety=safeDown; + + return minSafety; +} + +double UPolycone::SafetyFromOutside(const UVector3& p, bool aAccurate) const +{ + if (!aAccurate) + return enclosingCylinder->SafetyFromOutside(p); + + int index = GetSection(p.z); + double minSafety = SafetyFromOutsideSection(index, p); + if (minSafety < 1e-6) return minSafety; + + double zbase = fZs[index + 1]; + for (int i = index + 1; i <= fMaxSection; ++i) + { + double dz = fZs[i] - zbase; + if (dz >= minSafety) break; + double safety = SafetyFromOutsideSection(i, p); + if (safety < minSafety) minSafety = safety; + } + + zbase = fZs[index - 1]; + for (int i = index - 1; i >= 0; --i) + { + double dz = zbase - fZs[i]; + if (dz >= minSafety) break; + double safety = SafetyFromOutsideSection(i, p); + if (safety < minSafety) minSafety = safety; + } + return minSafety; +} + +bool UPolycone::Normal(const UVector3& p, UVector3& n) const +{ + double htolerance = 0.5 * fgTolerance; + int index = GetSection(p.z); + + EnumInside nextPos; + int nextSection; + + if (index > 0 && p.z - fZs[index] < htolerance) + { + nextSection = index - 1; + nextPos = InsideSection(nextSection, p); + } + else if (index < fMaxSection && fZs[index + 1] - p.z < htolerance) + { + nextSection = index + 1; + nextPos = InsideSection(nextSection, p); + } + else + { + const UPolyconeSection& section = fSections[index]; + UVector3 ps(p.x, p.y, p.z - section.shift); + bool res = section.solid->Normal(ps, n); + if(n.Mag()<0.9)std::cout<<"UPcon Norm 1 ="<radius; + aMin.Set(-r, -r, fZs.front()); + aMax.Set(r, r, fZs.back()); + //std::cout<<"UPOLy Extent "<Bmax(); + rz->StartWithZMin(); + + // Prepare vectors for storage + // + std::vector Z; + std::vector Rmin; + std::vector Rmax; + + int countPlanes = 1; + int icurr = 0; + int icurl = 0; + + // first plane Z=Z[0] + // + Z.push_back(corners[0].z); + double Zprev = Z[0]; + if (Zprev == corners[1].z) + { + Rmin.push_back(corners[0].r); + Rmax.push_back(corners[1].r); + icurr = 1; + } + else if (Zprev == corners[numPlanes - 1].z) + { + Rmin.push_back(corners[numPlanes - 1].r); + Rmax.push_back(corners[0].r); + icurl = numPlanes - 1; + } + else + { + Rmin.push_back(corners[0].r); + Rmax.push_back(corners[0].r); + } + + // next planes until last + // + int inextr = 0, inextl = 0; + for (int i = 0; i < numPlanes - 2; i++) + { + inextr = 1 + icurr; + inextl = (icurl <= 0) ? numPlanes - 1 : icurl - 1; + + if ((corners[inextr].z >= Zmax) & (corners[inextl].z >= Zmax)) + { + break; + } + + double Zleft = corners[inextl].z; + double Zright = corners[inextr].z; + if (Zright > Zleft) + { + Z.push_back(Zleft); + countPlanes++; + double difZr = corners[inextr].z - corners[icurr].z; + double difZl = corners[inextl].z - corners[icurl].z; + + if (std::fabs(difZl) < frTolerance) + { + if (std::fabs(difZr) < frTolerance) + { + Rmin.push_back(corners[inextl].r); + Rmax.push_back(corners[icurr].r); + } + else + { + Rmin.push_back(corners[inextl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); + } + } + else if (difZl >= frTolerance) + { + if (std::fabs(difZr) < frTolerance) + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r); + } + else + { + Rmin.push_back(corners[icurl].r); + Rmax.push_back(corners[icurr].r + (Zleft-corners[icurr].z)/difZr + *(corners[inextr].r - corners[icurr].r)); + } + } + else + { + isConvertible = false; + break; + } + icurl = (icurl == 0) ? numPlanes - 1 : icurl - 1; + } + else if (std::fabs(Zright - Zleft) < frTolerance) // Zright=Zleft + { + Z.push_back(Zleft); + countPlanes++; + icurr++; + + icurl = (icurl == 0) ? numPlanes - 1 : icurl - 1; + + Rmin.push_back(corners[inextl].r); + Rmax.push_back(corners[inextr].r); + } + else // Zright= frTolerance) + { + if (std::fabs(difZl) < frTolerance) + { + Rmax.push_back(corners[inextr].r); + Rmin.push_back(corners[icurr].r); + } + else + { + Rmax.push_back(corners[inextr].r); + Rmin.push_back(corners[icurl].r + (Zright - corners[icurl].z) / difZl + * (corners[inextl].r - corners[icurl].r)); + } + icurr++; + } + else + { + isConvertible = false; + break; + } + } + } // end for loop + + // last plane Z=Zmax + // + Z.push_back(Zmax); + countPlanes++; + inextr = 1 + icurr; + inextl = (icurl <= 0) ? numPlanes - 1 : icurl - 1; + + if (corners[inextr].z == corners[inextl].z) + { + Rmax.push_back(corners[inextr].r); + Rmin.push_back(corners[inextl].r); + } + else + { + Rmax.push_back(corners[inextr].r); + Rmin.push_back(corners[inextl].r); + } + + // Set original parameters Rmin,Rmax,Z + // + if (isConvertible) + { + fOriginalParameters = new UPolyconeHistorical; + fOriginalParameters->fZValues.resize(numPlanes); + fOriginalParameters->Rmin.resize(numPlanes); + fOriginalParameters->Rmax.resize(numPlanes); + + for (int j = 0; j < countPlanes; j++) + { + fOriginalParameters->fZValues[j] = Z[j]; + fOriginalParameters->Rmax[j] = Rmax[j]; + fOriginalParameters->Rmin[j] = Rmin[j]; + } + fOriginalParameters->fStartAngle = startPhi; + fOriginalParameters->fOpeningAngle = endPhi - startPhi; + fOriginalParameters->fNumZPlanes = countPlanes; + + } + else // Set parameters(r,z) with Rmin==0 as convention + { + std::ostringstream message; + message << "Polycone " << GetName() << std::endl + << "cannot be converted to Polycone with (Rmin,Rmaz,Z) parameters!"; + UUtils::Exception("UPolycone::SetOriginalParameters()", "GeomSolids0002", + Warning, 1, "can not convert"); + + fOriginalParameters = new UPolyconeHistorical; + + fOriginalParameters->fZValues.resize(numPlanes); + fOriginalParameters->Rmin.resize(numPlanes); + fOriginalParameters->Rmax.resize(numPlanes); + + for (int j = 0; j < numPlanes; j++) + { + fOriginalParameters->fZValues[j] = corners[j].z; + fOriginalParameters->Rmax[j] = corners[j].r; + fOriginalParameters->Rmin[j] = 0.0; + } + fOriginalParameters->fStartAngle = startPhi; + fOriginalParameters->fOpeningAngle = endPhi - startPhi; + fOriginalParameters->fNumZPlanes = numPlanes; + } + return isConvertible; +} +// +// Reset +// +void UPolycone::Reset() +{ + // + // Clear old setup + // + delete enclosingCylinder; + + fCubicVolume = 0; + fSurfaceArea = 0; + double phiStart=fOriginalParameters->fStartAngle; + double* Z, *R1, *R2; + int num = fOriginalParameters->fNumZPlanes; + Z = new double[num]; + R1 = new double[num]; + R2 = new double[num]; + for (int i = 0; i < num; i++) + { + Z[i] = fOriginalParameters->fZValues[i]; + R1[i] = fOriginalParameters->Rmin[i]; + R2[i] = fOriginalParameters->Rmax[i]; + } + + Init(phiStart, phiStart+ fOriginalParameters->fOpeningAngle, num, Z, R1, R2); + delete [] R1; + delete [] Z; + delete [] R2; +} diff --git a/source/geometry/solids/usolids/src/UPolyconeSide.cc b/source/geometry/solids/usolids/src/UPolyconeSide.cc index 831fbb280ea..03cafb8d4d8 100644 --- a/source/geometry/solids/usolids/src/UPolyconeSide.cc +++ b/source/geometry/solids/usolids/src/UPolyconeSide.cc @@ -419,29 +419,22 @@ VUSolid::EnumInside UPolyconeSide::Inside(const UVector3& p, // // Check both sides // - double distFrom[2], distOut2[2], dist2[2]; - double edgeRZnorm[2]; + double distFrom, distOut2, dist2; + double edgeRZnorm; - distFrom[0] = DistanceAway(p, false, distOut2[0], edgeRZnorm); - distFrom[1] = DistanceAway(p, true, distOut2[1], edgeRZnorm + 1); + distFrom = DistanceAway(p, distOut2, &edgeRZnorm); + dist2 = distFrom * distFrom + distOut2; - dist2[0] = distFrom[0] * distFrom[0] + distOut2[0]; - dist2[1] = distFrom[1] * distFrom[1] + distOut2[1]; - // - // Who's closest? - // - int i = std::fabs(dist2[0]) < std::fabs(dist2[1]) ? 0 : 1; - - *bestDistance = std::sqrt(dist2[i]); // could sqrt be removed? + *bestDistance = std::sqrt(dist2); // could sqrt be removed? // // Okay then, inside or out? // - if ((std::fabs(edgeRZnorm[i]) < atolerance) - && (distOut2[i] < atolerance * atolerance)) + if ((std::fabs(edgeRZnorm) < atolerance) + && (distOut2 < atolerance * atolerance)) return VUSolid::eSurface; - else if (edgeRZnorm[i] < 0) + else if (edgeRZnorm < 0) return VUSolid::eInside; else return VUSolid::eOutside; @@ -972,6 +965,97 @@ double UPolyconeSide::DistanceAway(const UVector3& p, return answer; } +// +// DistanceAway +// +// +// Special version of DistanceAway for Inside. +// opposite parameter is not used, instead use sign of rx for choosing the side +// +double UPolyconeSide::DistanceAway(const UVector3& p, + double& distOutside2, + double* edgeRZnorm) +{ + // + // Convert our point to r and z + // + double rx = p.Perp(), zx = p.z; + + // + // Change sign of r if we should + // + int part = 1; + if (rx < 0) part = -1; + + // + // Calculate return value + // + double deltaR = rx - r[0]*part, deltaZ = zx - z[0]; + double answer = deltaR * rNorm*part + deltaZ * zNorm; + + // + // Are we off the surface in r,z space? + // + double q = deltaR * rS *part+ deltaZ * zS; + if (q < 0) + { + distOutside2 = q * q; + if (edgeRZnorm) + { + *edgeRZnorm = deltaR * rNormEdge[0]*part + deltaZ * zNormEdge[0]; + } + } + else if (q > length) + { + distOutside2 = UUtils::sqr(q - length); + if (edgeRZnorm) + { + deltaR = rx - r[1]*part; + deltaZ = zx - z[1]; + *edgeRZnorm = deltaR * rNormEdge[1]*part + deltaZ * zNormEdge[1]; + } + } + else + { + distOutside2 = 0; + if (edgeRZnorm) *edgeRZnorm = answer; + } + + if (phiIsOpen) + { + // + // Finally, check phi + // + double phi = GetPhi(p); + while (phi < startPhi) phi += 2 * UUtils::kPi; + + if (phi > startPhi + deltaPhi) + { + // + // Oops. Are we closer to the start phi or end phi? + // + double d1 = phi - startPhi - deltaPhi; + while (phi > startPhi) phi -= 2 * UUtils::kPi; + double d2 = startPhi - phi; + + if (d2 < d1) d1 = d2; + + // + // Add result to our distance + // + double dist = d1 * rx*part; + + distOutside2 += dist * dist; + if (edgeRZnorm) + { + *edgeRZnorm = std::max(std::fabs(*edgeRZnorm), std::fabs(dist)); + } + } + } + + return answer; +} + // // PointOnCone diff --git a/source/geometry/solids/usolids/src/UTet.cc b/source/geometry/solids/usolids/src/UTet.cc index 7ca0e985206..341dc49b9a5 100644 --- a/source/geometry/solids/usolids/src/UTet.cc +++ b/source/geometry/solids/usolids/src/UTet.cc @@ -134,8 +134,14 @@ UTet::UTet(const std::string& name, // Fake default constructor - sets only member data and allocates memory // for usage restricted to object persistency. // -UTet::UTet( __void__& ) - : VUSolid() +UTet::UTet( __void__&) + : VUSolid(""), fCubicVolume(0.), fSurfaceArea(0.), + fAnchor(0,0,0), fP2(0,0,0), fP3(0,0,0), fP4(0,0,0), fMiddle(0,0,0), + fNormal123(0,0,0), fNormal142(0,0,0), fNormal134(0,0,0), + fNormal234(0,0,0), warningFlag(0), + fCdotN123(0.), fCdotN142(0.), fCdotN134(0.), fCdotN234(0.), + fXMin(0.), fXMax(0.), fYMin(0.), fYMax(0.), fZMin(0.), fZMax(0.), + fDx(0.), fDy(0.), fDz(0.), fTol(0.), fMaxSize(0.) { } @@ -624,12 +630,12 @@ std::vector UTet::GetVertices() const void UTet::Extent(UVector3& aMin, UVector3& aMax) const { // Returns the full 3D cartesian extent of the solid. - aMin.x = -fDx; - aMax.x = fDx; - aMin.y = -fDy; - aMax.y = fDy; - aMin.z = -fDz; - aMax.z = fDz; + aMin.x = fXMin; + aMax.x = fXMax; + aMin.y = fYMin; + aMax.y = fYMax; + aMin.z = fZMin; + aMax.z = fZMax; } //______________________________________________________________________________ void UTet::GetParametersList(int, double* aArray) const diff --git a/source/geometry/solids/usolids/src/UTubs.cc b/source/geometry/solids/usolids/src/UTubs.cc index 569a40eb881..6396ff0dd24 100644 --- a/source/geometry/solids/usolids/src/UTubs.cc +++ b/source/geometry/solids/usolids/src/UTubs.cc @@ -1,1697 +1,1697 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UTubs -// -// 19.10.12 Marek Gayer -// Created from original implementation in Geant4 -// -------------------------------------------------------------------- - -#include "UUtils.hh" -#include -#include -#include -#include "UTubs.hh" - -using namespace std; - -///////////////////////////////////////////////////////////////////////// -// -// Constructor - check parameters, convert angles so 02PI then reset to 2PI - -UTubs::UTubs(const std::string& pName, - double pRMin, double pRMax, - double pDz, - double pSPhi, double pDPhi) - : VUSolid(pName.c_str()), fRMin(pRMin), fRMax(pRMax), fDz(pDz), fSPhi(0), fDPhi(0) -{ - fCubicVolume=0.; - fSurfaceArea=0.; - kRadTolerance = frTolerance; - kAngTolerance = faTolerance; - - if (pDz <= 0) // Check z-len - { - std::ostringstream message; - message << "Negative Z half-length (" << pDz << ") in solid: " << GetName(); - UUtils::Exception("UTubs::UTubs()", "GeomSolids0002", FatalErrorInArguments, 1, message.str().c_str()); - } - if ((pRMin >= pRMax) || (pRMin < 0)) // Check radii - { - std::ostringstream message; - message << "Invalid values for radii in solid: " << GetName() - << std::endl - << "pRMin = " << pRMin << ", pRMax = " << pRMax; - UUtils::Exception("UTubs::UTubs()", "GeomSolids0002", FatalErrorInArguments, 1, message.str().c_str()); - } - - // Check angles - // - CheckPhiAngles(pSPhi, pDPhi); -} - -/////////////////////////////////////////////////////////////////////// -// -// Fake default constructor - sets only member data and allocates memory -// for usage restricted to object persistency. -// -UTubs::UTubs() - : VUSolid(""), fCubicVolume(0.), fSurfaceArea(0.), - kRadTolerance(0.), kAngTolerance(0.), - fRMin(0.), fRMax(0.), fDz(0.), fSPhi(0.), fDPhi(0.), - fSinCPhi(0.), fCosCPhi(0.), fCosHDPhiOT(0.), fCosHDPhiIT(0.), - fSinSPhi(0.), fCosSPhi(0.), fSinEPhi(0.), fCosEPhi(0.), - fSinSPhiDPhi(0.), fCosSPhiDPhi(0.), - fPhiFullTube(false) -{ -} - -////////////////////////////////////////////////////////////////////////// -// -// Destructor - -UTubs::~UTubs() -{ -} - -////////////////////////////////////////////////////////////////////////// -// -// Copy constructor - -UTubs::UTubs(const UTubs& rhs) - : VUSolid(rhs), - fCubicVolume(rhs.fCubicVolume), fSurfaceArea(rhs.fSurfaceArea), - kRadTolerance(rhs.kRadTolerance), kAngTolerance(rhs.kAngTolerance), - fRMin(rhs.fRMin), fRMax(rhs.fRMax), fDz(rhs.fDz), - fSPhi(rhs.fSPhi), fDPhi(rhs.fDPhi), - fSinCPhi(rhs.fSinCPhi), fCosCPhi(rhs.fSinCPhi), - fCosHDPhiOT(rhs.fCosHDPhiOT), fCosHDPhiIT(rhs.fCosHDPhiOT), - fSinSPhi(rhs.fSinSPhi), fCosSPhi(rhs.fCosSPhi), - fSinEPhi(rhs.fSinEPhi), fCosEPhi(rhs.fCosEPhi), - fSinSPhiDPhi(rhs.fSinSPhiDPhi), fCosSPhiDPhi(rhs.fCosSPhiDPhi), - fPhiFullTube(rhs.fPhiFullTube) -{ -} - -////////////////////////////////////////////////////////////////////////// -// -// Assignment operator - -UTubs& UTubs::operator = (const UTubs& rhs) -{ - // Check assignment to self - // - if (this == &rhs) - { - return *this; - } - - // Copy base class data - // - VUSolid::operator=(rhs); - - // Copy data - // - fCubicVolume = rhs.fCubicVolume; - fSurfaceArea = rhs.fSurfaceArea; - kRadTolerance = rhs.kRadTolerance; - kAngTolerance = rhs.kAngTolerance; - fRMin = rhs.fRMin; - fRMax = rhs.fRMax; - fDz = rhs.fDz; - fSPhi = rhs.fSPhi; - fDPhi = rhs.fDPhi; - fSinCPhi = rhs.fSinCPhi; - fCosCPhi = rhs.fSinCPhi; - fCosHDPhiOT = rhs.fCosHDPhiOT; - fCosHDPhiIT = rhs.fCosHDPhiOT; - fSinSPhi = rhs.fSinSPhi; - fCosSPhi = rhs.fCosSPhi; - fSinEPhi = rhs.fSinEPhi; - fCosEPhi = rhs.fCosEPhi; - fSinSPhiDPhi = rhs.fSinSPhiDPhi; - fCosSPhiDPhi = rhs.fCosSPhiDPhi; - - fPhiFullTube = rhs.fPhiFullTube; - - return *this; -} - - -/////////////////////////////////////////////////////////////////////////// -// -// Return whether point inside/outside/on surface - -inline VUSolid::EnumInside UTubs::Inside(const UVector3& p) const -{ - double r2, pPhi, tolRMin, tolRMax; - VUSolid::EnumInside in = eOutside; - static const double halfCarTolerance = VUSolid::Tolerance() * 0.5; - static const double halfRadTolerance = kRadTolerance * 0.5; - static const double halfAngTolerance = kAngTolerance * 0.5; - - if (std::fabs(p.z) <= fDz - halfCarTolerance) - { - r2 = p.x * p.x + p.y * p.y; - - if (fRMin) - { - tolRMin = fRMin + halfRadTolerance; - } - else - { - tolRMin = 0; - } - - tolRMax = fRMax - halfRadTolerance; - - if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) - { - if (fPhiFullTube) - { - in = eInside; - } - else - { - // Try inner tolerant phi boundaries (=>inside) - // if not inside, try outer tolerant phi boundaries - - if ((tolRMin == 0) && (std::fabs(p.x) <= halfCarTolerance) - && (std::fabs(p.y) <= halfCarTolerance)) - { - in = eSurface; - } - else - { - pPhi = std::atan2(p.y, p.x); - if (pPhi < -halfAngTolerance) - { - pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi - } - - if (fSPhi >= 0) - { - if ((std::fabs(pPhi) < halfAngTolerance) - && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) - { - pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi - } - if ((pPhi >= fSPhi + halfAngTolerance) - && (pPhi <= fSPhi + fDPhi - halfAngTolerance)) - { - in = eInside; - } - else if ((pPhi >= fSPhi - halfAngTolerance) - && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) - { - in = eSurface; - } - } - else // fSPhi < 0 - { - if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) - && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) - { - ; //eOutside - } - else if ((pPhi <= fSPhi + 2 * UUtils::kPi + halfAngTolerance) - && (pPhi >= fSPhi + fDPhi - halfAngTolerance)) - { - in = eSurface; - } - else - { - in = eInside; - } - } - } - } - } - else // Try generous boundaries - { - tolRMin = fRMin - halfRadTolerance; - tolRMax = fRMax + halfRadTolerance; - - if (tolRMin < 0) - { - tolRMin = 0; - } - - if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) - { - if (fPhiFullTube || (r2 <= halfRadTolerance * halfRadTolerance)) - { - // Continuous in phi or on z-axis - in = eSurface; - } - else // Try outer tolerant phi boundaries only - { - pPhi = std::atan2(p.y, p.x); - - if (pPhi < -halfAngTolerance) - { - pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi - } - if (fSPhi >= 0) - { - if ((std::fabs(pPhi) < halfAngTolerance) - && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) - { - pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi - } - if ((pPhi >= fSPhi - halfAngTolerance) - && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) - { - in = eSurface; - } - } - else // fSPhi < 0 - { - if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) - && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) - { - ; // eOutside - } - else - { - in = eSurface; - } - } - } - } - } - } - else if (std::fabs(p.z) <= fDz + halfCarTolerance) - { - // Check within tolerant r limits - r2 = p.x * p.x + p.y * p.y; - tolRMin = fRMin - halfRadTolerance; - tolRMax = fRMax + halfRadTolerance; - - if (tolRMin < 0) - { - tolRMin = 0; - } - - if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) - { - if (fPhiFullTube || (r2 <= halfRadTolerance * halfRadTolerance)) - { - // Continuous in phi or on z-axis - in = eSurface; - } - else // Try outer tolerant phi boundaries - { - pPhi = std::atan2(p.y, p.x); - - if (pPhi < -halfAngTolerance) - { - pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi - } - if (fSPhi >= 0) - { - if ((std::fabs(pPhi) < halfAngTolerance) - && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) - { - pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi - } - if ((pPhi >= fSPhi - halfAngTolerance) - && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) - { - in = eSurface; - } - } - else // fSPhi < 0 - { - if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) - && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) - { - ; - } - else - { - in = eSurface; - } - } - } - } - } - return in; -} - -/////////////////////////////////////////////////////////////////////////// -// -// Return Unit normal of surface closest to p -// - note if point on z axis, ignore phi divided sides -// - unsafe if point close to z axis a rmin=0 - no explicit checks - -bool UTubs::Normal(const UVector3& p, UVector3& n) const -{ - int noSurfaces = 0; - double rho, pPhi; - double distZ, distRMin, distRMax; - double distSPhi = UUtils::kInfinity, distEPhi = UUtils::kInfinity; - - static const double halfCarTolerance = 0.5 * VUSolid::Tolerance(); - static const double halfAngTolerance = 0.5 * kAngTolerance; - - UVector3 norm, sumnorm(0., 0., 0.); - UVector3 nZ = UVector3(0, 0, 1.0); - UVector3 nR, nPs, nPe; - - rho = std::sqrt(p.x * p.x + p.y * p.y); - - distRMin = std::fabs(rho - fRMin); - distRMax = std::fabs(rho - fRMax); - distZ = std::fabs(std::fabs(p.z) - fDz); - - if (!fPhiFullTube) // Protected against (0,0,z) - { - if (rho > halfCarTolerance) - { - pPhi = std::atan2(p.y, p.x); - - if (pPhi < fSPhi - halfCarTolerance) - { - pPhi += 2 * UUtils::kPi; - } - else if (pPhi > fSPhi + fDPhi + halfCarTolerance) - { - pPhi -= 2 * UUtils::kPi; - } - - distSPhi = std::fabs(pPhi - fSPhi); - distEPhi = std::fabs(pPhi - fSPhi - fDPhi); - } - else if (!fRMin) - { - distSPhi = 0.; - distEPhi = 0.; - } - nPs = UVector3(fSinSPhi, -fCosSPhi, 0); - nPe = UVector3(-fSinSPhiDPhi /* std::sin(fSPhi+fDPhi)*/, fCosSPhiDPhi, 0); - } - if (rho > halfCarTolerance) - { - nR = UVector3(p.x / rho, p.y / rho, 0); - } - - if (distRMax <= halfCarTolerance) - { - noSurfaces ++; - sumnorm += nR; - } - if (fRMin && (distRMin <= halfCarTolerance)) - { - noSurfaces ++; - sumnorm -= nR; - } - if (fDPhi < 2 * UUtils::kPi) - { - if (distSPhi <= halfAngTolerance) - { - noSurfaces ++; - sumnorm += nPs; - } - if (distEPhi <= halfAngTolerance) - { - noSurfaces ++; - sumnorm += nPe; - } - } - if (distZ <= halfCarTolerance) - { - noSurfaces ++; - if (p.z >= 0.) - { - sumnorm += nZ; - } - else - { - sumnorm -= nZ; - } - } - if (noSurfaces == 0) - { -#ifdef UDEBUG - UUtils::Exception("UTubs::SurfaceNormal(p)", "GeomSolids1002", - Warning, 1, "Point p is not on surface !?"); - int oldprc = cout.precision(20); - cout << "UTubs::SN ( " << p.x << ", " << p.y << ", " << p.z << " ); " - << std::endl << std::endl; - cout.precision(oldprc); -#endif - norm = ApproxSurfaceNormal(p); - } - else if (noSurfaces == 1) - { - norm = sumnorm; - } - else - { - norm = sumnorm.Unit(); - } - - n = norm; - - return noSurfaces; // TODO: return true or false on validity -} - -///////////////////////////////////////////////////////////////////////////// -// -// Algorithm for SurfaceNormal() following the original specification -// for points not on the surface - -UVector3 UTubs::ApproxSurfaceNormal(const UVector3& p) const -{ - ENorm side; - UVector3 norm; - double rho, phi; - double distZ, distRMin, distRMax, distSPhi, distEPhi, distMin; - - rho = std::sqrt(p.x * p.x + p.y * p.y); - - distRMin = std::fabs(rho - fRMin); - distRMax = std::fabs(rho - fRMax); - distZ = std::fabs(std::fabs(p.z) - fDz); - - if (distRMin < distRMax) // First minimum - { - if (distZ < distRMin) - { - distMin = distZ; - side = kNZ; - } - else - { - distMin = distRMin; - side = kNRMin ; - } - } - else - { - if (distZ < distRMax) - { - distMin = distZ; - side = kNZ ; - } - else - { - distMin = distRMax; - side = kNRMax ; - } - } - if (!fPhiFullTube && rho) // Protected against (0,0,z) - { - phi = std::atan2(p.y, p.x); - - if (phi < 0) - { - phi += 2 * UUtils::kPi; - } - - if (fSPhi < 0) - { - distSPhi = std::fabs(phi - (fSPhi + 2 * UUtils::kPi)) * rho; - } - else - { - distSPhi = std::fabs(phi - fSPhi) * rho; - } - distEPhi = std::fabs(phi - fSPhi - fDPhi) * rho; - - if (distSPhi < distEPhi) // Find new minimum - { - if (distSPhi < distMin) - { - side = kNSPhi; - } - } - else - { - if (distEPhi < distMin) - { - side = kNEPhi; - } - } - } - switch (side) - { - case kNRMin : // Inner radius - { - norm = UVector3(-p.x / rho, -p.y / rho, 0); - break; - } - case kNRMax : // Outer radius - { - norm = UVector3(p.x / rho, p.y / rho, 0); - break; - } - case kNZ : // + or - dz - { - if (p.z > 0) - { - norm = UVector3(0, 0, 1); - } - else - { - norm = UVector3(0, 0, -1); - } - break; - } - case kNSPhi: - { - norm = UVector3(fSinSPhi, -fCosSPhi, 0); - break; - } - case kNEPhi: - { - norm = UVector3(-fSinSPhiDPhi, fCosSPhiDPhi, 0); - break; - } - default: // Should never reach this case ... - { - // DumpInfo(); - UUtils::Exception("UTubs::ApproxSurfaceNormal()", - "GeomSolids1002", Warning, 1, - "Undefined side for valid surface normal to solid."); - break; - } - } - return norm; -} - -//////////////////////////////////////////////////////////////////// -// -// -// Calculate distance to shape from outside, along normalised vector -// - return UUtils::kInfinity if no intersection, or intersection distance <= tolerance -// -// - Compute the intersection with the z planes -// - if at valid r, phi, return -// -// -> If point is outer outer radius, compute intersection with rmax -// - if at valid phi,z return -// -// -> Compute intersection with inner radius, taking largest +ve root -// - if valid (in z,phi), save intersction -// -// -> If phi segmented, compute intersections with phi half planes -// - return smallest of valid phi intersections and -// inner radius intersection -// -// NOTE: -// - 'if valid' implies tolerant checking of intersection points - -double UTubs::DistanceToIn(const UVector3& p, const UVector3& v, double) const -{ - double snxt = UUtils::kInfinity; // snxt = default return value - double tolORMin2, tolIRMax2; // 'generous' radii squared - double tolORMax2, tolIRMin2, tolODz, tolIDz; - const double dRmax = 100.*fRMax; - - static const double halfCarTolerance = 0.5 * VUSolid::Tolerance(); - static const double halfRadTolerance = 0.5 * kRadTolerance; - - // Intersection point variables - // - double Dist, sd, xi, yi, zi, rho2, inum, iden, cosPsi, Comp; - double t1, t2, t3, b, c, d; // Quadratic solver variables - - // Calculate tolerant rmin and rmax - - if (fRMin > kRadTolerance) - { - tolORMin2 = (fRMin - halfRadTolerance) * (fRMin - halfRadTolerance); - tolIRMin2 = (fRMin + halfRadTolerance) * (fRMin + halfRadTolerance); - } - else - { - tolORMin2 = 0.0; - tolIRMin2 = 0.0; - } - tolORMax2 = (fRMax + halfRadTolerance) * (fRMax + halfRadTolerance); - tolIRMax2 = (fRMax - halfRadTolerance) * (fRMax - halfRadTolerance); - - // Intersection with Z surfaces - - tolIDz = fDz - halfCarTolerance; - tolODz = fDz + halfCarTolerance; - - if (std::fabs(p.z) >= tolIDz) - { - if (p.z * v.z < 0) // at +Z going in -Z or visa versa - { - sd = (std::fabs(p.z) - fDz) / std::fabs(v.z); // Z intersect distance - - if (sd < 0.0) - { - sd = 0.0; - } - - xi = p.x + sd * v.x; // Intersection coords - yi = p.y + sd * v.y; - rho2 = xi * xi + yi * yi; - - // Check validity of intersection - - if ((tolIRMin2 <= rho2) && (rho2 <= tolIRMax2)) - { - if (!fPhiFullTube && rho2) - { - // Psi = angle made with central (average) phi of shape - // - inum = xi * fCosCPhi + yi * fSinCPhi; - iden = std::sqrt(rho2); - cosPsi = inum / iden; - if (cosPsi >= fCosHDPhiIT) - { - return sd; - } - } - else - { - return sd; - } - } - } - else - { - if (snxt < halfCarTolerance) - { - snxt = 0; - } - return snxt; // On/outside extent, and heading away - // -> cannot intersect - } - } - - // -> Can not intersect z surfaces - // - // Intersection with rmax (possible return) and rmin (must also check phi) - // - // Intersection point (xi,yi,zi) on line x=p.x+t*v.x etc. - // - // Intersects with x^2+y^2=R^2 - // - // Hence (v.x^2+v.y^2)t^2+ 2t(p.x*v.x+p.y*v.y)+p.x^2+p.y^2-R^2=0 - // t1 t2 t3 - - t1 = 1.0 - v.z * v.z; - t2 = p.x * v.x + p.y * v.y; - t3 = p.x * p.x + p.y * p.y; - - if (t1 > 0) // Check not || to z axis - { - b = t2 / t1; - c = t3 - fRMax * fRMax; - if ((t3 >= tolORMax2) && (t2 < 0)) // This also handles the tangent case - { - // Try outer cylinder intersection - // c=(t3-fRMax*fRMax)/t1; - - c /= t1; - d = b * b - c; - - if (d >= 0) // If real root - { - sd = c / (-b + std::sqrt(d)); - if (sd >= 0) // If 'forwards' - { - if (sd > dRmax) // Avoid rounding errors due to precision issues on - { - // 64 bits systems. Split long distances and recompute - double fTerm = sd - std::fmod(sd, dRmax); - sd = fTerm + DistanceToIn(p + fTerm * v, v); - } - // Check z intersection - // - zi = p.z + sd * v.z; - if (std::fabs(zi) <= tolODz) - { - // Z ok. Check phi intersection if reqd - // - if (fPhiFullTube) - { - return sd; - } - else - { - xi = p.x + sd * v.x; - yi = p.y + sd * v.y; - cosPsi = (xi * fCosCPhi + yi * fSinCPhi) / fRMax; - if (cosPsi >= fCosHDPhiIT) - { - return sd; - } - } - } // end if std::fabs(zi) - } // end if (sd>=0) - } // end if (d>=0) - } // end if (r>=fRMax) - else - { - // Inside outer radius : - // check not inside, and heading through tubs (-> 0 to in) - - if ((t3 > tolIRMin2) && (t2 < 0) && (std::fabs(p.z) <= tolIDz)) - { - // Inside both radii, delta r -ve, inside z extent - - if (!fPhiFullTube) - { - inum = p.x * fCosCPhi + p.y * fSinCPhi; - iden = std::sqrt(t3); - cosPsi = inum / iden; - if (cosPsi >= fCosHDPhiIT) - { - // In the old version, the small negative tangent for the point - // on surface was not taken in account, and returning 0.0 ... - // New version: check the tangent for the point on surface and - // if no intersection, return UUtils::kInfinity, if intersection instead - // return sd. - // - c = t3 - fRMax * fRMax; - if (c <= 0.0) - { - return 0.0; - } - else - { - c = c / t1; - d = b * b - c; - if (d >= 0.0) - { - snxt = c / (-b + std::sqrt(d)); // using safe solution - // for quadratic equation - if (snxt < halfCarTolerance) - { - snxt = 0; - } - return snxt; - } - else - { - return UUtils::kInfinity; - } - } - } - } - else - { - // In the old version, the small negative tangent for the point - // on surface was not taken in account, and returning 0.0 ... - // New version: check the tangent for the point on surface and - // if no intersection, return UUtils::kInfinity, if intersection instead - // return sd. - // - c = t3 - fRMax * fRMax; - if (c <= 0.0) - { - return 0.0; - } - else - { - c = c / t1; - d = b * b - c; - if (d >= 0.0) - { - snxt = c / (-b + std::sqrt(d)); // using safe solution - // for quadratic equation - if (snxt < halfCarTolerance) - { - snxt = 0; - } - return snxt; - } - else - { - return UUtils::kInfinity; - } - } - } // end if (!fPhiFullTube) - } // end if (t3>tolIRMin2) - } // end if (Inside Outer Radius) - if (fRMin) // Try inner cylinder intersection - { - c = (t3 - fRMin * fRMin) / t1; - d = b * b - c; - if (d >= 0.0) // If real root - { - // Always want 2nd root - we are outside and know rmax Hit was bad - // - If on surface of rmin also need farthest root - - sd = (b > 0.) ? c / (-b - std::sqrt(d)) : (-b + std::sqrt(d)); - if (sd >= -halfCarTolerance) // check forwards - { - // Check z intersection - // - if (sd < 0.0) - { - sd = 0.0; - } - if (sd > dRmax) // Avoid rounding errors due to precision issues seen - { - // 64 bits systems. Split long distances and recompute - double fTerm = sd - std::fmod(sd, dRmax); - sd = fTerm + DistanceToIn(p + fTerm * v, v); - } - zi = p.z + sd * v.z; - if (std::fabs(zi) <= tolODz) - { - // Z ok. Check phi - // - if (fPhiFullTube) - { - return sd; - } - else - { - xi = p.x + sd * v.x; - yi = p.y + sd * v.y; - cosPsi = (xi * fCosCPhi + yi * fSinCPhi) / fRMin; - if (cosPsi >= fCosHDPhiIT) - { - // Good inner radius isect - // - but earlier phi isect still possible - - snxt = sd; - } - } - } // end if std::fabs(zi) - } // end if (sd>=0) - } // end if (d>=0) - } // end if (fRMin) - } - - // Phi segment intersection - // - // o Tolerant of points inside phi planes by up to VUSolid::Tolerance()*0.5 - // - // o NOTE: Large duplication of code between sphi & ephi checks - // -> only diffs: sphi -> ephi, Comp -> -Comp and half-plane - // intersection check <=0 -> >=0 - // -> use some form of loop Construct ? - // - if (!fPhiFullTube) - { - // First phi surface (Starting phi) - // - Comp = v.x * fSinSPhi - v.y * fCosSPhi; - - if (Comp < 0) // Component in outwards normal dirn - { - Dist = (p.y * fCosSPhi - p.x * fSinSPhi); - - if (Dist < halfCarTolerance) - { - sd = Dist / Comp; - - if (sd < snxt) - { - if (sd < 0) - { - sd = 0.0; - } - zi = p.z + sd * v.z; - if (std::fabs(zi) <= tolODz) - { - xi = p.x + sd * v.x; - yi = p.y + sd * v.y; - rho2 = xi * xi + yi * yi; - - if (((rho2 >= tolIRMin2) && (rho2 <= tolIRMax2)) - || ((rho2 > tolORMin2) && (rho2 < tolIRMin2) - && (v.y * fCosSPhi - v.x * fSinSPhi > 0) - && (v.x * fCosSPhi + v.y * fSinSPhi >= 0)) - || ((rho2 > tolIRMax2) && (rho2 < tolORMax2) - && (v.y * fCosSPhi - v.x * fSinSPhi > 0) - && (v.x * fCosSPhi + v.y * fSinSPhi < 0))) - { - // z and r intersections good - // - check intersecting with correct half-plane - // - if ((yi * fCosCPhi - xi * fSinCPhi) <= halfCarTolerance) - { - snxt = sd; - } - } - } - } - } - } - - // Second phi surface (Ending phi) - - Comp = -(v.x * fSinEPhi - v.y * fCosEPhi); - - if (Comp < 0) // Component in outwards normal dirn - { - Dist = -(p.y * fCosEPhi - p.x * fSinEPhi); - - if (Dist < halfCarTolerance) - { - sd = Dist / Comp; - - if (sd < snxt) - { - if (sd < 0) - { - sd = 0; - } - zi = p.z + sd * v.z; - if (std::fabs(zi) <= tolODz) - { - xi = p.x + sd * v.x; - yi = p.y + sd * v.y; - rho2 = xi * xi + yi * yi; - if (((rho2 >= tolIRMin2) && (rho2 <= tolIRMax2)) - || ((rho2 > tolORMin2) && (rho2 < tolIRMin2) - && (v.x * fSinEPhi - v.y * fCosEPhi > 0) - && (v.x * fCosEPhi + v.y * fSinEPhi >= 0)) - || ((rho2 > tolIRMax2) && (rho2 < tolORMax2) - && (v.x * fSinEPhi - v.y * fCosEPhi > 0) - && (v.x * fCosEPhi + v.y * fSinEPhi < 0))) - { - // z and r intersections good - // - check intersecting with correct half-plane - // - if ((yi * fCosCPhi - xi * fSinCPhi) >= 0) - { - snxt = sd; - } - } //?? >=-halfCarTolerance - } - } - } - } // Comp < 0 - } // !fPhiFullTube - if (snxt < halfCarTolerance) - { - snxt = 0; - } - return snxt; -} - -////////////////////////////////////////////////////////////////// -// -// Calculate distance to shape from outside, along normalised vector -// - return UUtils::kInfinity if no intersection, or intersection distance <= tolerance -// -// - Compute the intersection with the z planes -// - if at valid r, phi, return -// -// -> If point is outer outer radius, compute intersection with rmax -// - if at valid phi,z return -// -// -> Compute intersection with inner radius, taking largest +ve root -// - if valid (in z,phi), save intersction -// -// -> If phi segmented, compute intersections with phi half planes -// - return smallest of valid phi intersections and -// inner radius intersection -// -// NOTE: -// - Precalculations for phi trigonometry are Done `just in time' -// - `if valid' implies tolerant checking of intersection points -// Calculate distance (<= actual) to closest surface of shape from outside -// - Calculate distance to z, radial planes -// - Only to phi planes if outside phi extent -// - Return 0 if point inside - -double UTubs::SafetyFromOutside(const UVector3& p, bool aAccurate) const -{ - double safe = 0.0, rho, safe1, safe2, safe3; - double safePhi; - bool outside; - - rho = std::sqrt(p.x * p.x + p.y * p.y); - safe1 = fRMin - rho; - safe2 = rho - fRMax; - safe3 = std::fabs(p.z) - fDz; - - if (safe1 > safe2) - { - safe = safe1; - } - else - { - safe = safe2; - } - if (safe3 > safe) - { - safe = safe3; - } - - if ((!fPhiFullTube) && (rho)) - { - safePhi = SafetyToPhi(p,rho,outside); - if ((outside) && (safePhi > safe)) - { - safe = safePhi; - } - } - - if (safe < 0) - { - safe = 0; return safe; // point is Inside; - } - if (!aAccurate) return safe; - double safsq = 0.0; - int count = 0; - if (safe1 > 0) - { - safsq += safe1 * safe1; - count++; - } - if (safe2 > 0) - { - safsq += safe2 * safe2; - count++; - } - if (safe3 > 0) - { - safsq += safe3 * safe3; - count++; - } - if (count == 1) return safe; - return std::sqrt(safsq); -} - -////////////////////////////////////////////////////////////////////////////// -// -// Calculate distance to surface of shape from `inside', allowing for tolerance -// - Only Calc rmax intersection if no valid rmin intersection - -// double UTubs::DistanceToOut( const UVector3& p, const UVector3& v, const bool calcNorm, bool *validNorm, UVector3 *n ) const -double UTubs::DistanceToOut(const UVector3& p, const UVector3& v, UVector3& n, bool& validNorm, double) const -{ - ESide side = kNull , sider = kNull, sidephi = kNull; - double snxt, srd = UUtils::kInfinity, sphi = UUtils::kInfinity, pdist; - double deltaR, t1, t2, t3, b, c, d2, roMin2; - - static const double halfCarTolerance = VUSolid::Tolerance() * 0.5; - static const double halfAngTolerance = kAngTolerance * 0.5; - - // Vars for phi intersection: - - double pDistS, compS, pDistE, compE, sphi2, xi, yi, vphi, roi2; - - // Z plane intersection - - if (v.z > 0) - { - pdist = fDz - p.z; - if (pdist > halfCarTolerance) - { - snxt = pdist / v.z; - side = kPZ; - } - else - { - n = UVector3(0, 0, 1); - validNorm = true; - return snxt = 0; - } - } - else if (v.z < 0) - { - pdist = fDz + p.z; - - if (pdist > halfCarTolerance) - { - snxt = -pdist / v.z; - side = kMZ; - } - else - { - n = UVector3(0, 0, -1); - validNorm = true; - return snxt = 0.0; - } - } - else - { - snxt = UUtils::kInfinity; // Travel perpendicular to z axis - side = kNull; - } - - // Radial Intersections - // - // Find intersection with cylinders at rmax/rmin - // Intersection point (xi,yi,zi) on line x=p.x+t*v.x etc. - // - // Intersects with x^2+y^2=R^2 - // - // Hence (v.x^2+v.y^2)t^2+ 2t(p.x*v.x+p.y*v.y)+p.x^2+p.y^2-R^2=0 - // - // t1 t2 t3 - - t1 = 1.0 - v.z * v.z; // since v normalised - t2 = p.x * v.x + p.y * v.y; - t3 = p.x * p.x + p.y * p.y; - - if (snxt > 10 * (fDz + fRMax)) - { - roi2 = 2 * fRMax * fRMax; - } - else - { - roi2 = snxt * snxt * t1 + 2 * snxt * t2 + t3; // radius^2 on +-fDz - } - - if (t1 > 0) // Check not parallel - { - // Calculate srd, r exit distance - - if ((t2 >= 0.0) && (roi2 > fRMax * (fRMax + kRadTolerance))) - { - // Delta r not negative => leaving via rmax - - deltaR = t3 - fRMax * fRMax; - - // NOTE: Should use rho-fRMax<-kRadTolerance*0.5 - // - avoid sqrt for efficiency - - if (deltaR < -kRadTolerance * fRMax) - { - b = t2 / t1; - c = deltaR / t1; - d2 = b * b - c; - if (d2 >= 0) - { - srd = c / (-b - std::sqrt(d2)); - } - else - { - srd = 0.; - } - sider = kRMax; - } - else - { - // On tolerant boundary & heading outwards (or perpendicular to) - // outer radial surface -> leaving immediately - n = UVector3(p.x / fRMax, p.y / fRMax, 0); - validNorm = true; - return snxt = 0; // Leaving by rmax immediately - } - } - else if (t2 < 0.) // i.e. t2 < 0; Possible rmin intersection - { - roMin2 = t3 - t2 * t2 / t1; // min ro2 of the plane of movement - - if (fRMin && (roMin2 < fRMin * (fRMin - kRadTolerance))) - { - deltaR = t3 - fRMin * fRMin; - b = t2 / t1; - c = deltaR / t1; - d2 = b * b - c; - - if (d2 >= 0) // Leaving via rmin - { - // NOTE: SHould use rho-rmin>kRadTolerance*0.5 - // - avoid sqrt for efficiency - - if (deltaR > kRadTolerance * fRMin) - { - srd = c / (-b + std::sqrt(d2)); - sider = kRMin; - } - else - { - validNorm = false; // Concave side - n = UVector3(-p.x / fRMin, -p.y / fRMin, 0); - return snxt = 0.0; - } - } - else // No rmin intersect -> must be rmax intersect - { - deltaR = t3 - fRMax * fRMax; - c = deltaR / t1; - d2 = b * b - c; - if (d2 >= 0.) - { - srd = -b + std::sqrt(d2); - sider = kRMax; - } - else // Case: On the border+t2 fRMax * (fRMax + kRadTolerance)) - // No rmin intersect -> must be rmax intersect - { - deltaR = t3 - fRMax * fRMax; - b = t2 / t1; - c = deltaR / t1; - d2 = b * b - c; - if (d2 >= 0) - { - srd = -b + std::sqrt(d2); - sider = kRMax; - } - else // Case: On the border+t2 fSPhi + fDPhi + halfAngTolerance) - { - vphi -= 2 * UUtils::kPi; - } - - - if (p.x || p.y) // Check if on z axis (rho not needed later) - { - // pDist -ve when inside - - pDistS = p.x * fSinSPhi - p.y * fCosSPhi; - pDistE = -p.x * fSinEPhi + p.y * fCosEPhi; - - // Comp -ve when in direction of outwards normal - - compS = -fSinSPhi * v.x + fCosSPhi * v.y; - compE = fSinEPhi * v.x - fCosEPhi * v.y; - - sidephi = kNull; - - if (((fDPhi <= UUtils::kPi) && ((pDistS <= halfCarTolerance) - && (pDistE <= halfCarTolerance))) - || ((fDPhi > UUtils::kPi) && !((pDistS > halfCarTolerance) - && (pDistE > halfCarTolerance)))) - { - // Inside both phi *full* planes - - if (compS < 0) - { - sphi = pDistS / compS; - - if (sphi >= -halfCarTolerance) - { - xi = p.x + sphi * v.x; - yi = p.y + sphi * v.y; - - // Check intersecting with correct half-plane - // (if not -> no intersect) - // - if ((std::fabs(xi) <= VUSolid::Tolerance()) && (std::fabs(yi) <= VUSolid::Tolerance())) - { - sidephi = kSPhi; - if (((fSPhi - halfAngTolerance) <= vphi) - && ((fSPhi + fDPhi + halfAngTolerance) >= vphi)) - { - sphi = UUtils::kInfinity; - } - } - else if (yi * fCosCPhi - xi * fSinCPhi >= 0) - { - sphi = UUtils::kInfinity; - } - else - { - sidephi = kSPhi; - if (pDistS > -halfCarTolerance) - { - sphi = 0.0; // Leave by sphi immediately - } - } - } - else - { - sphi = UUtils::kInfinity; - } - } - else - { - sphi = UUtils::kInfinity; - } - - if (compE < 0) - { - sphi2 = pDistE / compE; - - // Only check further if < starting phi intersection - // - if ((sphi2 > -halfCarTolerance) && (sphi2 < sphi)) - { - xi = p.x + sphi2 * v.x; - yi = p.y + sphi2 * v.y; - - if ((std::fabs(xi) <= VUSolid::Tolerance()) && (std::fabs(yi) <= VUSolid::Tolerance())) - { - // Leaving via ending phi - // - if (!((fSPhi - halfAngTolerance <= vphi) - && (fSPhi + fDPhi + halfAngTolerance >= vphi))) - { - sidephi = kEPhi; - if (pDistE <= -halfCarTolerance) - { - sphi = sphi2; - } - else - { - sphi = 0.0; - } - } - } - else // Check intersecting with correct half-plane - - if ((yi * fCosCPhi - xi * fSinCPhi) >= 0) - { - // Leaving via ending phi - // - sidephi = kEPhi; - if (pDistE <= -halfCarTolerance) - { - sphi = sphi2; - } - else - { - sphi = 0.0; - } - } - } - } - } - else - { - sphi = UUtils::kInfinity; - } - } - else - { - // On z axis + travel not || to z axis -> if phi of vector direction - // within phi of shape, Step limited by rmax, else Step =0 - - if ((fSPhi - halfAngTolerance <= vphi) - && (vphi <= fSPhi + fDPhi + halfAngTolerance)) - { - sphi = UUtils::kInfinity; - } - else - { - sidephi = kSPhi; // arbitrary - sphi = 0.0; - } - } - if (sphi < snxt) // Order intersecttions - { - snxt = sphi; - side = sidephi; - } - } - if (srd < snxt) // Order intersections - { - snxt = srd; - side = sider; - } - } - // if (calcNorm) - { - switch (side) - { - case kRMax: - // Note: returned vector not normalised - // (divide by fRMax for Unit vector) - // - xi = p.x + snxt * v.x; - yi = p.y + snxt * v.y; - n = UVector3(xi / fRMax, yi / fRMax, 0); - validNorm = true; - break; - - case kRMin: - xi = p.x + snxt * v.x; - yi = p.y + snxt * v.y; - n = UVector3(-xi / fRMin, -yi / fRMin, 0); - validNorm = false; // Rmin is inconvex - break; - - case kSPhi: - if (fDPhi <= UUtils::kPi) - { - n = UVector3(fSinSPhi, -fCosSPhi, 0); - validNorm = true; - } - else - { - n = UVector3(fSinSPhi, -fCosSPhi, 0); - validNorm = false; - } - break; - - case kEPhi: - if (fDPhi <= UUtils::kPi) - { - n = UVector3(-fSinEPhi, fCosEPhi, 0); - validNorm = true; - } - else - { - n = UVector3(-fSinEPhi, fCosEPhi, 0); - validNorm = false; - } - break; - - case kPZ: - n = UVector3(0, 0, 1); - validNorm = true; - break; - - case kMZ: - n = UVector3(0, 0, -1); - validNorm = true; - break; - - default: - cout << std::endl; - // DumpInfo(); - std::ostringstream message; - int oldprc = message.precision(16); - message << "Undefined side for valid surface normal to solid." - << std::endl - << "Position:" << std::endl << std::endl - << "p.x = " << p.x << " mm" << std::endl - << "p.y = " << p.y << " mm" << std::endl - << "p.z = " << p.z << " mm" << std::endl << std::endl - << "Direction:" << std::endl << std::endl - << "v.x = " << v.x << std::endl - << "v.y = " << v.y << std::endl - << "v.z = " << v.z << std::endl << std::endl - << "Proposed distance :" << std::endl << std::endl - << "snxt = " << snxt << " mm" << std::endl; - message.precision(oldprc); - UUtils::Exception("UTubs::DistanceToOut(p,v,..)", "GeomSolids1002", - Warning, 1, message.str().c_str()); - break; - } - } - if (snxt < halfCarTolerance) - { - snxt = 0; - } - - return snxt; -} - -////////////////////////////////////////////////////////////////////////// -// -// Calculate distance (<=actual) to closest surface of shape from inside - -double UTubs::SafetyFromInside(const UVector3& p, bool) const -{ - double safe = 0.0, rho, safeZ; - rho = std::sqrt(p.x * p.x + p.y * p.y); - -#ifdef UDEBUG - if (Inside(p) == eOutside) - { - int oldprc = cout.precision(16); - cout << std::endl; - DumpInfo(); - cout << "Position:" << std::endl << std::endl; - cout << "p.x = " << p.x << " mm" << std::endl; - cout << "p.y = " << p.y << " mm" << std::endl; - cout << "p.z = " << p.z << " mm" << std::endl << std::endl; - cout.precision(oldprc); - UUtils::Exception("UTubs::DistanceToOut(p)", "GeomSolids1002", - Warning, 1, "Point p is outside !?"); - } -#endif - safe = SafetyFromInsideR(p, rho); - safeZ = fDz - std::fabs(p.z); - - if (safeZ < safe) - { - safe = safeZ; - } - - if (safe < 0) - { - safe = 0; - } - - return safe; -} - -////////////////////////////////////////////////////////////////////////// -// -// Stream object contents to an output stream - -UGeometryType UTubs::GetEntityType() const -{ - return std::string("Tubs"); -} - -////////////////////////////////////////////////////////////////////////// -// -// Make a clone of the object -// -VUSolid* UTubs::Clone() const -{ - return new UTubs(*this); -} - -////////////////////////////////////////////////////////////////////////// -// -// Stream object contents to an output stream - -std::ostream& UTubs::StreamInfo(std::ostream& os) const -{ - int oldprc = os.precision(16); - os << "-----------------------------------------------------------\n" - << " *** Dump for solid - " << GetName() << " ***\n" - << " ===================================================\n" - << " Solid type: UTubs\n" - << " Parameters: \n" - << " inner radius : " << fRMin << " mm \n" - << " outer radius : " << fRMax << " mm \n" - << " half length Z: " << fDz << " mm \n" - << " starting phi : " << fSPhi / (UUtils::kPi / 180.0) << " degrees \n" - << " delta phi : " << fDPhi / (UUtils::kPi / 180.0) << " degrees \n" - << "-----------------------------------------------------------\n"; - os.precision(oldprc); - - return os; -} - -///////////////////////////////////////////////////////////////////////// -// -// GetPointOnSurface - -UVector3 UTubs::GetPointOnSurface() const -{ - double xRand, yRand, zRand, phi, cosphi, sinphi, chose, - aOne, aTwo, aThr, aFou; - double rRand; - - aOne = 2.*fDz * fDPhi * fRMax; - aTwo = 2.*fDz * fDPhi * fRMin; - aThr = 0.5 * fDPhi * (fRMax * fRMax - fRMin * fRMin); - aFou = 2.*fDz * (fRMax - fRMin); - - phi = UUtils::Random(fSPhi, fSPhi + fDPhi); - cosphi = std::cos(phi); - sinphi = std::sin(phi); - - rRand = UUtils::GetRadiusInRing(fRMin, fRMax); - - if ((fSPhi == 0) && (fDPhi == 2 * UUtils::kPi)) - { - aFou = 0; - } - - chose = UUtils::Random(0., aOne + aTwo + 2.*aThr + 2.*aFou); - - if ((chose >= 0) && (chose < aOne)) - { - xRand = fRMax * cosphi; - yRand = fRMax * sinphi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand); - } - else if ((chose >= aOne) && (chose < aOne + aTwo)) - { - xRand = fRMin * cosphi; - yRand = fRMin * sinphi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand); - } - else if ((chose >= aOne + aTwo) && (chose < aOne + aTwo + aThr)) - { - xRand = rRand * cosphi; - yRand = rRand * sinphi; - zRand = fDz; - return UVector3(xRand, yRand, zRand); - } - else if ((chose >= aOne + aTwo + aThr) && (chose < aOne + aTwo + 2.*aThr)) - { - xRand = rRand * cosphi; - yRand = rRand * sinphi; - zRand = -1.*fDz; - return UVector3(xRand, yRand, zRand); - } - else if ((chose >= aOne + aTwo + 2.*aThr) - && (chose < aOne + aTwo + 2.*aThr + aFou)) - { - xRand = rRand * fCosSPhi; - yRand = rRand * fSinSPhi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand); - } - else - { - xRand = rRand * fCosSPhiDPhi; - yRand = rRand * fSinSPhiDPhi; - zRand = UUtils::Random(-1.*fDz, fDz); - return UVector3(xRand, yRand, zRand); - } -} - -void UTubs::Extent(UVector3& aMin, UVector3& aMax) const -{ - aMin = UVector3(-fRMax, -fRMax, -fDz); - aMax = UVector3(fRMax, fRMax, fDz); -} - -void UTubs::GetParametersList(int, double* aArray) const -{ - aArray[0] = GetInnerRadius(); - aArray[1] = GetOuterRadius(); - aArray[2] = GetZHalfLength(); - aArray[3] = GetStartPhiAngle(); - aArray[4] = GetDeltaPhiAngle(); -} +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UTubs +// +// 19.10.12 Marek Gayer +// Created from original implementation in Geant4 +// -------------------------------------------------------------------- + +#include "UUtils.hh" +#include +#include +#include +#include "UTubs.hh" + +using namespace std; + +///////////////////////////////////////////////////////////////////////// +// +// Constructor - check parameters, convert angles so 02PI then reset to 2PI + +UTubs::UTubs(const std::string& pName, + double pRMin, double pRMax, + double pDz, + double pSPhi, double pDPhi) + : VUSolid(pName.c_str()), fRMin(pRMin), fRMax(pRMax), fDz(pDz), fSPhi(0), fDPhi(0) +{ + fCubicVolume=0.; + fSurfaceArea=0.; + kRadTolerance = frTolerance; + kAngTolerance = faTolerance; + + if (pDz <= 0) // Check z-len + { + std::ostringstream message; + message << "Negative Z half-length (" << pDz << ") in solid: " << GetName(); + UUtils::Exception("UTubs::UTubs()", "GeomSolids0002", FatalErrorInArguments, 1, message.str().c_str()); + } + if ((pRMin >= pRMax) || (pRMin < 0)) // Check radii + { + std::ostringstream message; + message << "Invalid values for radii in solid: " << GetName() + << std::endl + << "pRMin = " << pRMin << ", pRMax = " << pRMax; + UUtils::Exception("UTubs::UTubs()", "GeomSolids0002", FatalErrorInArguments, 1, message.str().c_str()); + } + + // Check angles + // + CheckPhiAngles(pSPhi, pDPhi); +} + +/////////////////////////////////////////////////////////////////////// +// +// Fake default constructor - sets only member data and allocates memory +// for usage restricted to object persistency. +// +UTubs::UTubs() + : VUSolid(""), fCubicVolume(0.), fSurfaceArea(0.), + kRadTolerance(0.), kAngTolerance(0.), + fRMin(0.), fRMax(0.), fDz(0.), fSPhi(0.), fDPhi(0.), + fSinCPhi(0.), fCosCPhi(0.), fCosHDPhiOT(0.), fCosHDPhiIT(0.), + fSinSPhi(0.), fCosSPhi(0.), fSinEPhi(0.), fCosEPhi(0.), + fSinSPhiDPhi(0.), fCosSPhiDPhi(0.), + fPhiFullTube(false) +{ +} + +////////////////////////////////////////////////////////////////////////// +// +// Destructor + +UTubs::~UTubs() +{ +} + +////////////////////////////////////////////////////////////////////////// +// +// Copy constructor + +UTubs::UTubs(const UTubs& rhs) + : VUSolid(rhs), + fCubicVolume(rhs.fCubicVolume), fSurfaceArea(rhs.fSurfaceArea), + kRadTolerance(rhs.kRadTolerance), kAngTolerance(rhs.kAngTolerance), + fRMin(rhs.fRMin), fRMax(rhs.fRMax), fDz(rhs.fDz), + fSPhi(rhs.fSPhi), fDPhi(rhs.fDPhi), + fSinCPhi(rhs.fSinCPhi), fCosCPhi(rhs.fCosCPhi), + fCosHDPhiOT(rhs.fCosHDPhiOT), fCosHDPhiIT(rhs.fCosHDPhiIT), + fSinSPhi(rhs.fSinSPhi), fCosSPhi(rhs.fCosSPhi), + fSinEPhi(rhs.fSinEPhi), fCosEPhi(rhs.fCosEPhi), + fSinSPhiDPhi(rhs.fSinSPhiDPhi), fCosSPhiDPhi(rhs.fCosSPhiDPhi), + fPhiFullTube(rhs.fPhiFullTube) +{ +} + +////////////////////////////////////////////////////////////////////////// +// +// Assignment operator + +UTubs& UTubs::operator = (const UTubs& rhs) +{ + // Check assignment to self + // + if (this == &rhs) + { + return *this; + } + + // Copy base class data + // + VUSolid::operator=(rhs); + + // Copy data + // + fCubicVolume = rhs.fCubicVolume; + fSurfaceArea = rhs.fSurfaceArea; + kRadTolerance = rhs.kRadTolerance; + kAngTolerance = rhs.kAngTolerance; + fRMin = rhs.fRMin; + fRMax = rhs.fRMax; + fDz = rhs.fDz; + fSPhi = rhs.fSPhi; + fDPhi = rhs.fDPhi; + fSinCPhi = rhs.fSinCPhi; + fCosCPhi = rhs.fCosCPhi; + fCosHDPhiOT = rhs.fCosHDPhiOT; + fCosHDPhiIT = rhs.fCosHDPhiIT; + fSinSPhi = rhs.fSinSPhi; + fCosSPhi = rhs.fCosSPhi; + fSinEPhi = rhs.fSinEPhi; + fCosEPhi = rhs.fCosEPhi; + fSinSPhiDPhi = rhs.fSinSPhiDPhi; + fCosSPhiDPhi = rhs.fCosSPhiDPhi; + + fPhiFullTube = rhs.fPhiFullTube; + + return *this; +} + + +/////////////////////////////////////////////////////////////////////////// +// +// Return whether point inside/outside/on surface + +inline VUSolid::EnumInside UTubs::Inside(const UVector3& p) const +{ + double r2, pPhi, tolRMin, tolRMax; + VUSolid::EnumInside in = eOutside; + static const double halfCarTolerance = VUSolid::Tolerance() * 0.5; + static const double halfRadTolerance = kRadTolerance * 0.5; + static const double halfAngTolerance = kAngTolerance * 0.5; + + if (std::fabs(p.z) <= fDz - halfCarTolerance) + { + r2 = p.x * p.x + p.y * p.y; + + if (fRMin) + { + tolRMin = fRMin + halfRadTolerance; + } + else + { + tolRMin = 0; + } + + tolRMax = fRMax - halfRadTolerance; + + if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) + { + if (fPhiFullTube) + { + in = eInside; + } + else + { + // Try inner tolerant phi boundaries (=>inside) + // if not inside, try outer tolerant phi boundaries + + if ((tolRMin == 0) && (std::fabs(p.x) <= halfCarTolerance) + && (std::fabs(p.y) <= halfCarTolerance)) + { + in = eSurface; + } + else + { + pPhi = std::atan2(p.y, p.x); + if (pPhi < -halfAngTolerance) + { + pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi + } + + if (fSPhi >= 0) + { + if ((std::fabs(pPhi) < halfAngTolerance) + && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) + { + pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi + } + if ((pPhi >= fSPhi + halfAngTolerance) + && (pPhi <= fSPhi + fDPhi - halfAngTolerance)) + { + in = eInside; + } + else if ((pPhi >= fSPhi - halfAngTolerance) + && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) + { + in = eSurface; + } + } + else // fSPhi < 0 + { + if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) + && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) + { + ; //eOutside + } + else if ((pPhi <= fSPhi + 2 * UUtils::kPi + halfAngTolerance) + && (pPhi >= fSPhi + fDPhi - halfAngTolerance)) + { + in = eSurface; + } + else + { + in = eInside; + } + } + } + } + } + else // Try generous boundaries + { + tolRMin = fRMin - halfRadTolerance; + tolRMax = fRMax + halfRadTolerance; + + if (tolRMin < 0) + { + tolRMin = 0; + } + + if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) + { + if (fPhiFullTube || (r2 <= halfRadTolerance * halfRadTolerance)) + { + // Continuous in phi or on z-axis + in = eSurface; + } + else // Try outer tolerant phi boundaries only + { + pPhi = std::atan2(p.y, p.x); + + if (pPhi < -halfAngTolerance) + { + pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi + } + if (fSPhi >= 0) + { + if ((std::fabs(pPhi) < halfAngTolerance) + && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) + { + pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi + } + if ((pPhi >= fSPhi - halfAngTolerance) + && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) + { + in = eSurface; + } + } + else // fSPhi < 0 + { + if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) + && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) + { + ; // eOutside + } + else + { + in = eSurface; + } + } + } + } + } + } + else if (std::fabs(p.z) <= fDz + halfCarTolerance) + { + // Check within tolerant r limits + r2 = p.x * p.x + p.y * p.y; + tolRMin = fRMin - halfRadTolerance; + tolRMax = fRMax + halfRadTolerance; + + if (tolRMin < 0) + { + tolRMin = 0; + } + + if ((r2 >= tolRMin * tolRMin) && (r2 <= tolRMax * tolRMax)) + { + if (fPhiFullTube || (r2 <= halfRadTolerance * halfRadTolerance)) + { + // Continuous in phi or on z-axis + in = eSurface; + } + else // Try outer tolerant phi boundaries + { + pPhi = std::atan2(p.y, p.x); + + if (pPhi < -halfAngTolerance) + { + pPhi += 2 * UUtils::kPi; // 0<=pPhi<2UUtils::kPi + } + if (fSPhi >= 0) + { + if ((std::fabs(pPhi) < halfAngTolerance) + && (std::fabs(fSPhi + fDPhi - 2 * UUtils::kPi) < halfAngTolerance)) + { + pPhi += 2 * UUtils::kPi; // 0 <= pPhi < 2UUtils::kPi + } + if ((pPhi >= fSPhi - halfAngTolerance) + && (pPhi <= fSPhi + fDPhi + halfAngTolerance)) + { + in = eSurface; + } + } + else // fSPhi < 0 + { + if ((pPhi <= fSPhi + 2 * UUtils::kPi - halfAngTolerance) + && (pPhi >= fSPhi + fDPhi + halfAngTolerance)) + { + ; + } + else + { + in = eSurface; + } + } + } + } + } + return in; +} + +/////////////////////////////////////////////////////////////////////////// +// +// Return Unit normal of surface closest to p +// - note if point on z axis, ignore phi divided sides +// - unsafe if point close to z axis a rmin=0 - no explicit checks + +bool UTubs::Normal(const UVector3& p, UVector3& n) const +{ + int noSurfaces = 0; + double rho, pPhi; + double distZ, distRMin, distRMax; + double distSPhi = UUtils::kInfinity, distEPhi = UUtils::kInfinity; + + static const double halfCarTolerance = 0.5 * VUSolid::Tolerance(); + static const double halfAngTolerance = 0.5 * kAngTolerance; + + UVector3 norm, sumnorm(0., 0., 0.); + UVector3 nZ = UVector3(0, 0, 1.0); + UVector3 nR, nPs, nPe; + + rho = std::sqrt(p.x * p.x + p.y * p.y); + + distRMin = std::fabs(rho - fRMin); + distRMax = std::fabs(rho - fRMax); + distZ = std::fabs(std::fabs(p.z) - fDz); + + if (!fPhiFullTube) // Protected against (0,0,z) + { + if (rho > halfCarTolerance) + { + pPhi = std::atan2(p.y, p.x); + + if (pPhi < fSPhi - halfCarTolerance) + { + pPhi += 2 * UUtils::kPi; + } + else if (pPhi > fSPhi + fDPhi + halfCarTolerance) + { + pPhi -= 2 * UUtils::kPi; + } + + distSPhi = std::fabs(pPhi - fSPhi); + distEPhi = std::fabs(pPhi - fSPhi - fDPhi); + } + else if (!fRMin) + { + distSPhi = 0.; + distEPhi = 0.; + } + nPs = UVector3(fSinSPhi, -fCosSPhi, 0); + nPe = UVector3(-fSinSPhiDPhi /* std::sin(fSPhi+fDPhi)*/, fCosSPhiDPhi, 0); + } + if (rho > halfCarTolerance) + { + nR = UVector3(p.x / rho, p.y / rho, 0); + } + + if (distRMax <= halfCarTolerance) + { + noSurfaces ++; + sumnorm += nR; + } + if (fRMin && (distRMin <= halfCarTolerance)) + { + noSurfaces ++; + sumnorm -= nR; + } + if (fDPhi < 2 * UUtils::kPi) + { + if (distSPhi <= halfAngTolerance) + { + noSurfaces ++; + sumnorm += nPs; + } + if (distEPhi <= halfAngTolerance) + { + noSurfaces ++; + sumnorm += nPe; + } + } + if (distZ <= halfCarTolerance) + { + noSurfaces ++; + if (p.z >= 0.) + { + sumnorm += nZ; + } + else + { + sumnorm -= nZ; + } + } + if (noSurfaces == 0) + { +#ifdef UDEBUG + UUtils::Exception("UTubs::SurfaceNormal(p)", "GeomSolids1002", + Warning, 1, "Point p is not on surface !?"); + int oldprc = cout.precision(20); + cout << "UTubs::SN ( " << p.x << ", " << p.y << ", " << p.z << " ); " + << std::endl << std::endl; + cout.precision(oldprc); +#endif + norm = ApproxSurfaceNormal(p); + } + else if (noSurfaces == 1) + { + norm = sumnorm; + } + else + { + norm = sumnorm.Unit(); + } + + n = norm; + + return noSurfaces; // TODO: return true or false on validity +} + +///////////////////////////////////////////////////////////////////////////// +// +// Algorithm for SurfaceNormal() following the original specification +// for points not on the surface + +UVector3 UTubs::ApproxSurfaceNormal(const UVector3& p) const +{ + ENorm side; + UVector3 norm; + double rho, phi; + double distZ, distRMin, distRMax, distSPhi, distEPhi, distMin; + + rho = std::sqrt(p.x * p.x + p.y * p.y); + + distRMin = std::fabs(rho - fRMin); + distRMax = std::fabs(rho - fRMax); + distZ = std::fabs(std::fabs(p.z) - fDz); + + if (distRMin < distRMax) // First minimum + { + if (distZ < distRMin) + { + distMin = distZ; + side = kNZ; + } + else + { + distMin = distRMin; + side = kNRMin ; + } + } + else + { + if (distZ < distRMax) + { + distMin = distZ; + side = kNZ ; + } + else + { + distMin = distRMax; + side = kNRMax ; + } + } + if (!fPhiFullTube && rho) // Protected against (0,0,z) + { + phi = std::atan2(p.y, p.x); + + if (phi < 0) + { + phi += 2 * UUtils::kPi; + } + + if (fSPhi < 0) + { + distSPhi = std::fabs(phi - (fSPhi + 2 * UUtils::kPi)) * rho; + } + else + { + distSPhi = std::fabs(phi - fSPhi) * rho; + } + distEPhi = std::fabs(phi - fSPhi - fDPhi) * rho; + + if (distSPhi < distEPhi) // Find new minimum + { + if (distSPhi < distMin) + { + side = kNSPhi; + } + } + else + { + if (distEPhi < distMin) + { + side = kNEPhi; + } + } + } + switch (side) + { + case kNRMin : // Inner radius + { + norm = UVector3(-p.x / rho, -p.y / rho, 0); + break; + } + case kNRMax : // Outer radius + { + norm = UVector3(p.x / rho, p.y / rho, 0); + break; + } + case kNZ : // + or - dz + { + if (p.z > 0) + { + norm = UVector3(0, 0, 1); + } + else + { + norm = UVector3(0, 0, -1); + } + break; + } + case kNSPhi: + { + norm = UVector3(fSinSPhi, -fCosSPhi, 0); + break; + } + case kNEPhi: + { + norm = UVector3(-fSinSPhiDPhi, fCosSPhiDPhi, 0); + break; + } + default: // Should never reach this case ... + { + // DumpInfo(); + UUtils::Exception("UTubs::ApproxSurfaceNormal()", + "GeomSolids1002", Warning, 1, + "Undefined side for valid surface normal to solid."); + break; + } + } + return norm; +} + +//////////////////////////////////////////////////////////////////// +// +// +// Calculate distance to shape from outside, along normalised vector +// - return UUtils::kInfinity if no intersection, or intersection distance <= tolerance +// +// - Compute the intersection with the z planes +// - if at valid r, phi, return +// +// -> If point is outer outer radius, compute intersection with rmax +// - if at valid phi,z return +// +// -> Compute intersection with inner radius, taking largest +ve root +// - if valid (in z,phi), save intersction +// +// -> If phi segmented, compute intersections with phi half planes +// - return smallest of valid phi intersections and +// inner radius intersection +// +// NOTE: +// - 'if valid' implies tolerant checking of intersection points + +double UTubs::DistanceToIn(const UVector3& p, const UVector3& v, double) const +{ + double snxt = UUtils::kInfinity; // snxt = default return value + double tolORMin2, tolIRMax2; // 'generous' radii squared + double tolORMax2, tolIRMin2, tolODz, tolIDz; + const double dRmax = 100.*fRMax; + + static const double halfCarTolerance = 0.5 * VUSolid::Tolerance(); + static const double halfRadTolerance = 0.5 * kRadTolerance; + + // Intersection point variables + // + double Dist, sd, xi, yi, zi, rho2, inum, iden, cosPsi, Comp; + double t1, t2, t3, b, c, d; // Quadratic solver variables + + // Calculate tolerant rmin and rmax + + if (fRMin > kRadTolerance) + { + tolORMin2 = (fRMin - halfRadTolerance) * (fRMin - halfRadTolerance); + tolIRMin2 = (fRMin + halfRadTolerance) * (fRMin + halfRadTolerance); + } + else + { + tolORMin2 = 0.0; + tolIRMin2 = 0.0; + } + tolORMax2 = (fRMax + halfRadTolerance) * (fRMax + halfRadTolerance); + tolIRMax2 = (fRMax - halfRadTolerance) * (fRMax - halfRadTolerance); + + // Intersection with Z surfaces + + tolIDz = fDz - halfCarTolerance; + tolODz = fDz + halfCarTolerance; + + if (std::fabs(p.z) >= tolIDz) + { + if (p.z * v.z < 0) // at +Z going in -Z or visa versa + { + sd = (std::fabs(p.z) - fDz) / std::fabs(v.z); // Z intersect distance + + if (sd < 0.0) + { + sd = 0.0; + } + + xi = p.x + sd * v.x; // Intersection coords + yi = p.y + sd * v.y; + rho2 = xi * xi + yi * yi; + + // Check validity of intersection + + if ((tolIRMin2 <= rho2) && (rho2 <= tolIRMax2)) + { + if (!fPhiFullTube && rho2) + { + // Psi = angle made with central (average) phi of shape + // + inum = xi * fCosCPhi + yi * fSinCPhi; + iden = std::sqrt(rho2); + cosPsi = inum / iden; + if (cosPsi >= fCosHDPhiIT) + { + return sd; + } + } + else + { + return sd; + } + } + } + else + { + if (snxt < halfCarTolerance) + { + snxt = 0; + } + return snxt; // On/outside extent, and heading away + // -> cannot intersect + } + } + + // -> Can not intersect z surfaces + // + // Intersection with rmax (possible return) and rmin (must also check phi) + // + // Intersection point (xi,yi,zi) on line x=p.x+t*v.x etc. + // + // Intersects with x^2+y^2=R^2 + // + // Hence (v.x^2+v.y^2)t^2+ 2t(p.x*v.x+p.y*v.y)+p.x^2+p.y^2-R^2=0 + // t1 t2 t3 + + t1 = 1.0 - v.z * v.z; + t2 = p.x * v.x + p.y * v.y; + t3 = p.x * p.x + p.y * p.y; + + if (t1 > 0) // Check not || to z axis + { + b = t2 / t1; + c = t3 - fRMax * fRMax; + if ((t3 >= tolORMax2) && (t2 < 0)) // This also handles the tangent case + { + // Try outer cylinder intersection + // c=(t3-fRMax*fRMax)/t1; + + c /= t1; + d = b * b - c; + + if (d >= 0) // If real root + { + sd = c / (-b + std::sqrt(d)); + if (sd >= 0) // If 'forwards' + { + if (sd > dRmax) // Avoid rounding errors due to precision issues on + { + // 64 bits systems. Split long distances and recompute + double fTerm = sd - std::fmod(sd, dRmax); + sd = fTerm + DistanceToIn(p + fTerm * v, v); + } + // Check z intersection + // + zi = p.z + sd * v.z; + if (std::fabs(zi) <= tolODz) + { + // Z ok. Check phi intersection if reqd + // + if (fPhiFullTube) + { + return sd; + } + else + { + xi = p.x + sd * v.x; + yi = p.y + sd * v.y; + cosPsi = (xi * fCosCPhi + yi * fSinCPhi) / fRMax; + if (cosPsi >= fCosHDPhiIT) + { + return sd; + } + } + } // end if std::fabs(zi) + } // end if (sd>=0) + } // end if (d>=0) + } // end if (r>=fRMax) + else + { + // Inside outer radius : + // check not inside, and heading through tubs (-> 0 to in) + + if ((t3 > tolIRMin2) && (t2 < 0) && (std::fabs(p.z) <= tolIDz)) + { + // Inside both radii, delta r -ve, inside z extent + + if (!fPhiFullTube) + { + inum = p.x * fCosCPhi + p.y * fSinCPhi; + iden = std::sqrt(t3); + cosPsi = inum / iden; + if (cosPsi >= fCosHDPhiIT) + { + // In the old version, the small negative tangent for the point + // on surface was not taken in account, and returning 0.0 ... + // New version: check the tangent for the point on surface and + // if no intersection, return UUtils::kInfinity, if intersection instead + // return sd. + // + c = t3 - fRMax * fRMax; + if (c <= 0.0) + { + return 0.0; + } + else + { + c = c / t1; + d = b * b - c; + if (d >= 0.0) + { + snxt = c / (-b + std::sqrt(d)); // using safe solution + // for quadratic equation + if (snxt < halfCarTolerance) + { + snxt = 0; + } + return snxt; + } + else + { + return UUtils::kInfinity; + } + } + } + } + else + { + // In the old version, the small negative tangent for the point + // on surface was not taken in account, and returning 0.0 ... + // New version: check the tangent for the point on surface and + // if no intersection, return UUtils::kInfinity, if intersection instead + // return sd. + // + c = t3 - fRMax * fRMax; + if (c <= 0.0) + { + return 0.0; + } + else + { + c = c / t1; + d = b * b - c; + if (d >= 0.0) + { + snxt = c / (-b + std::sqrt(d)); // using safe solution + // for quadratic equation + if (snxt < halfCarTolerance) + { + snxt = 0; + } + return snxt; + } + else + { + return UUtils::kInfinity; + } + } + } // end if (!fPhiFullTube) + } // end if (t3>tolIRMin2) + } // end if (Inside Outer Radius) + if (fRMin) // Try inner cylinder intersection + { + c = (t3 - fRMin * fRMin) / t1; + d = b * b - c; + if (d >= 0.0) // If real root + { + // Always want 2nd root - we are outside and know rmax Hit was bad + // - If on surface of rmin also need farthest root + + sd = (b > 0.) ? c / (-b - std::sqrt(d)) : (-b + std::sqrt(d)); + if (sd >= -halfCarTolerance) // check forwards + { + // Check z intersection + // + if (sd < 0.0) + { + sd = 0.0; + } + if (sd > dRmax) // Avoid rounding errors due to precision issues seen + { + // 64 bits systems. Split long distances and recompute + double fTerm = sd - std::fmod(sd, dRmax); + sd = fTerm + DistanceToIn(p + fTerm * v, v); + } + zi = p.z + sd * v.z; + if (std::fabs(zi) <= tolODz) + { + // Z ok. Check phi + // + if (fPhiFullTube) + { + return sd; + } + else + { + xi = p.x + sd * v.x; + yi = p.y + sd * v.y; + cosPsi = (xi * fCosCPhi + yi * fSinCPhi) / fRMin; + if (cosPsi >= fCosHDPhiIT) + { + // Good inner radius isect + // - but earlier phi isect still possible + + snxt = sd; + } + } + } // end if std::fabs(zi) + } // end if (sd>=0) + } // end if (d>=0) + } // end if (fRMin) + } + + // Phi segment intersection + // + // o Tolerant of points inside phi planes by up to VUSolid::Tolerance()*0.5 + // + // o NOTE: Large duplication of code between sphi & ephi checks + // -> only diffs: sphi -> ephi, Comp -> -Comp and half-plane + // intersection check <=0 -> >=0 + // -> use some form of loop Construct ? + // + if (!fPhiFullTube) + { + // First phi surface (Starting phi) + // + Comp = v.x * fSinSPhi - v.y * fCosSPhi; + + if (Comp < 0) // Component in outwards normal dirn + { + Dist = (p.y * fCosSPhi - p.x * fSinSPhi); + + if (Dist < halfCarTolerance) + { + sd = Dist / Comp; + + if (sd < snxt) + { + if (sd < 0) + { + sd = 0.0; + } + zi = p.z + sd * v.z; + if (std::fabs(zi) <= tolODz) + { + xi = p.x + sd * v.x; + yi = p.y + sd * v.y; + rho2 = xi * xi + yi * yi; + + if (((rho2 >= tolIRMin2) && (rho2 <= tolIRMax2)) + || ((rho2 > tolORMin2) && (rho2 < tolIRMin2) + && (v.y * fCosSPhi - v.x * fSinSPhi > 0) + && (v.x * fCosSPhi + v.y * fSinSPhi >= 0)) + || ((rho2 > tolIRMax2) && (rho2 < tolORMax2) + && (v.y * fCosSPhi - v.x * fSinSPhi > 0) + && (v.x * fCosSPhi + v.y * fSinSPhi < 0))) + { + // z and r intersections good + // - check intersecting with correct half-plane + // + if ((yi * fCosCPhi - xi * fSinCPhi) <= halfCarTolerance) + { + snxt = sd; + } + } + } + } + } + } + + // Second phi surface (Ending phi) + + Comp = -(v.x * fSinEPhi - v.y * fCosEPhi); + + if (Comp < 0) // Component in outwards normal dirn + { + Dist = -(p.y * fCosEPhi - p.x * fSinEPhi); + + if (Dist < halfCarTolerance) + { + sd = Dist / Comp; + + if (sd < snxt) + { + if (sd < 0) + { + sd = 0; + } + zi = p.z + sd * v.z; + if (std::fabs(zi) <= tolODz) + { + xi = p.x + sd * v.x; + yi = p.y + sd * v.y; + rho2 = xi * xi + yi * yi; + if (((rho2 >= tolIRMin2) && (rho2 <= tolIRMax2)) + || ((rho2 > tolORMin2) && (rho2 < tolIRMin2) + && (v.x * fSinEPhi - v.y * fCosEPhi > 0) + && (v.x * fCosEPhi + v.y * fSinEPhi >= 0)) + || ((rho2 > tolIRMax2) && (rho2 < tolORMax2) + && (v.x * fSinEPhi - v.y * fCosEPhi > 0) + && (v.x * fCosEPhi + v.y * fSinEPhi < 0))) + { + // z and r intersections good + // - check intersecting with correct half-plane + // + if ((yi * fCosCPhi - xi * fSinCPhi) >= 0) + { + snxt = sd; + } + } //?? >=-halfCarTolerance + } + } + } + } // Comp < 0 + } // !fPhiFullTube + if (snxt < halfCarTolerance) + { + snxt = 0; + } + return snxt; +} + +////////////////////////////////////////////////////////////////// +// +// Calculate distance to shape from outside, along normalised vector +// - return UUtils::kInfinity if no intersection, or intersection distance <= tolerance +// +// - Compute the intersection with the z planes +// - if at valid r, phi, return +// +// -> If point is outer outer radius, compute intersection with rmax +// - if at valid phi,z return +// +// -> Compute intersection with inner radius, taking largest +ve root +// - if valid (in z,phi), save intersction +// +// -> If phi segmented, compute intersections with phi half planes +// - return smallest of valid phi intersections and +// inner radius intersection +// +// NOTE: +// - Precalculations for phi trigonometry are Done `just in time' +// - `if valid' implies tolerant checking of intersection points +// Calculate distance (<= actual) to closest surface of shape from outside +// - Calculate distance to z, radial planes +// - Only to phi planes if outside phi extent +// - Return 0 if point inside + +double UTubs::SafetyFromOutside(const UVector3& p, bool aAccurate) const +{ + double safe = 0.0, rho, safe1, safe2, safe3; + double safePhi; + bool outside; + + rho = std::sqrt(p.x * p.x + p.y * p.y); + safe1 = fRMin - rho; + safe2 = rho - fRMax; + safe3 = std::fabs(p.z) - fDz; + + if (safe1 > safe2) + { + safe = safe1; + } + else + { + safe = safe2; + } + if (safe3 > safe) + { + safe = safe3; + } + + if ((!fPhiFullTube) && (rho)) + { + safePhi = SafetyToPhi(p,rho,outside); + if ((outside) && (safePhi > safe)) + { + safe = safePhi; + } + } + + if (safe < 0) + { + safe = 0; return safe; // point is Inside; + } + if (!aAccurate) return safe; + double safsq = 0.0; + int count = 0; + if (safe1 > 0) + { + safsq += safe1 * safe1; + count++; + } + if (safe2 > 0) + { + safsq += safe2 * safe2; + count++; + } + if (safe3 > 0) + { + safsq += safe3 * safe3; + count++; + } + if (count == 1) return safe; + return std::sqrt(safsq); +} + +////////////////////////////////////////////////////////////////////////////// +// +// Calculate distance to surface of shape from `inside', allowing for tolerance +// - Only Calc rmax intersection if no valid rmin intersection + +// double UTubs::DistanceToOut( const UVector3& p, const UVector3& v, const bool calcNorm, bool *validNorm, UVector3 *n ) const +double UTubs::DistanceToOut(const UVector3& p, const UVector3& v, UVector3& n, bool& validNorm, double) const +{ + ESide side = kNull , sider = kNull, sidephi = kNull; + double snxt, srd = UUtils::kInfinity, sphi = UUtils::kInfinity, pdist; + double deltaR, t1, t2, t3, b, c, d2, roMin2; + + static const double halfCarTolerance = VUSolid::Tolerance() * 0.5; + static const double halfAngTolerance = kAngTolerance * 0.5; + + // Vars for phi intersection: + + double pDistS, compS, pDistE, compE, sphi2, xi, yi, vphi, roi2; + + // Z plane intersection + + if (v.z > 0) + { + pdist = fDz - p.z; + if (pdist > halfCarTolerance) + { + snxt = pdist / v.z; + side = kPZ; + } + else + { + n = UVector3(0, 0, 1); + validNorm = true; + return snxt = 0; + } + } + else if (v.z < 0) + { + pdist = fDz + p.z; + + if (pdist > halfCarTolerance) + { + snxt = -pdist / v.z; + side = kMZ; + } + else + { + n = UVector3(0, 0, -1); + validNorm = true; + return snxt = 0.0; + } + } + else + { + snxt = UUtils::kInfinity; // Travel perpendicular to z axis + side = kNull; + } + + // Radial Intersections + // + // Find intersection with cylinders at rmax/rmin + // Intersection point (xi,yi,zi) on line x=p.x+t*v.x etc. + // + // Intersects with x^2+y^2=R^2 + // + // Hence (v.x^2+v.y^2)t^2+ 2t(p.x*v.x+p.y*v.y)+p.x^2+p.y^2-R^2=0 + // + // t1 t2 t3 + + t1 = 1.0 - v.z * v.z; // since v normalised + t2 = p.x * v.x + p.y * v.y; + t3 = p.x * p.x + p.y * p.y; + + if (snxt > 10 * (fDz + fRMax)) + { + roi2 = 2 * fRMax * fRMax; + } + else + { + roi2 = snxt * snxt * t1 + 2 * snxt * t2 + t3; // radius^2 on +-fDz + } + + if (t1 > 0) // Check not parallel + { + // Calculate srd, r exit distance + + if ((t2 >= 0.0) && (roi2 > fRMax * (fRMax + kRadTolerance))) + { + // Delta r not negative => leaving via rmax + + deltaR = t3 - fRMax * fRMax; + + // NOTE: Should use rho-fRMax<-kRadTolerance*0.5 + // - avoid sqrt for efficiency + + if (deltaR < -kRadTolerance * fRMax) + { + b = t2 / t1; + c = deltaR / t1; + d2 = b * b - c; + if (d2 >= 0) + { + srd = c / (-b - std::sqrt(d2)); + } + else + { + srd = 0.; + } + sider = kRMax; + } + else + { + // On tolerant boundary & heading outwards (or perpendicular to) + // outer radial surface -> leaving immediately + n = UVector3(p.x / fRMax, p.y / fRMax, 0); + validNorm = true; + return snxt = 0; // Leaving by rmax immediately + } + } + else if (t2 < 0.) // i.e. t2 < 0; Possible rmin intersection + { + roMin2 = t3 - t2 * t2 / t1; // min ro2 of the plane of movement + + if (fRMin && (roMin2 < fRMin * (fRMin - kRadTolerance))) + { + deltaR = t3 - fRMin * fRMin; + b = t2 / t1; + c = deltaR / t1; + d2 = b * b - c; + + if (d2 >= 0) // Leaving via rmin + { + // NOTE: SHould use rho-rmin>kRadTolerance*0.5 + // - avoid sqrt for efficiency + + if (deltaR > kRadTolerance * fRMin) + { + srd = c / (-b + std::sqrt(d2)); + sider = kRMin; + } + else + { + validNorm = false; // Concave side + n = UVector3(-p.x / fRMin, -p.y / fRMin, 0); + return snxt = 0.0; + } + } + else // No rmin intersect -> must be rmax intersect + { + deltaR = t3 - fRMax * fRMax; + c = deltaR / t1; + d2 = b * b - c; + if (d2 >= 0.) + { + srd = -b + std::sqrt(d2); + sider = kRMax; + } + else // Case: On the border+t2 fRMax * (fRMax + kRadTolerance)) + // No rmin intersect -> must be rmax intersect + { + deltaR = t3 - fRMax * fRMax; + b = t2 / t1; + c = deltaR / t1; + d2 = b * b - c; + if (d2 >= 0) + { + srd = -b + std::sqrt(d2); + sider = kRMax; + } + else // Case: On the border+t2 fSPhi + fDPhi + halfAngTolerance) + { + vphi -= 2 * UUtils::kPi; + } + + + if (p.x || p.y) // Check if on z axis (rho not needed later) + { + // pDist -ve when inside + + pDistS = p.x * fSinSPhi - p.y * fCosSPhi; + pDistE = -p.x * fSinEPhi + p.y * fCosEPhi; + + // Comp -ve when in direction of outwards normal + + compS = -fSinSPhi * v.x + fCosSPhi * v.y; + compE = fSinEPhi * v.x - fCosEPhi * v.y; + + sidephi = kNull; + + if (((fDPhi <= UUtils::kPi) && ((pDistS <= halfCarTolerance) + && (pDistE <= halfCarTolerance))) + || ((fDPhi > UUtils::kPi) && !((pDistS > halfCarTolerance) + && (pDistE > halfCarTolerance)))) + { + // Inside both phi *full* planes + + if (compS < 0) + { + sphi = pDistS / compS; + + if (sphi >= -halfCarTolerance) + { + xi = p.x + sphi * v.x; + yi = p.y + sphi * v.y; + + // Check intersecting with correct half-plane + // (if not -> no intersect) + // + if ((std::fabs(xi) <= VUSolid::Tolerance()) && (std::fabs(yi) <= VUSolid::Tolerance())) + { + sidephi = kSPhi; + if (((fSPhi - halfAngTolerance) <= vphi) + && ((fSPhi + fDPhi + halfAngTolerance) >= vphi)) + { + sphi = UUtils::kInfinity; + } + } + else if (yi * fCosCPhi - xi * fSinCPhi >= 0) + { + sphi = UUtils::kInfinity; + } + else + { + sidephi = kSPhi; + if (pDistS > -halfCarTolerance) + { + sphi = 0.0; // Leave by sphi immediately + } + } + } + else + { + sphi = UUtils::kInfinity; + } + } + else + { + sphi = UUtils::kInfinity; + } + + if (compE < 0) + { + sphi2 = pDistE / compE; + + // Only check further if < starting phi intersection + // + if ((sphi2 > -halfCarTolerance) && (sphi2 < sphi)) + { + xi = p.x + sphi2 * v.x; + yi = p.y + sphi2 * v.y; + + if ((std::fabs(xi) <= VUSolid::Tolerance()) && (std::fabs(yi) <= VUSolid::Tolerance())) + { + // Leaving via ending phi + // + if (!((fSPhi - halfAngTolerance <= vphi) + && (fSPhi + fDPhi + halfAngTolerance >= vphi))) + { + sidephi = kEPhi; + if (pDistE <= -halfCarTolerance) + { + sphi = sphi2; + } + else + { + sphi = 0.0; + } + } + } + else // Check intersecting with correct half-plane + + if ((yi * fCosCPhi - xi * fSinCPhi) >= 0) + { + // Leaving via ending phi + // + sidephi = kEPhi; + if (pDistE <= -halfCarTolerance) + { + sphi = sphi2; + } + else + { + sphi = 0.0; + } + } + } + } + } + else + { + sphi = UUtils::kInfinity; + } + } + else + { + // On z axis + travel not || to z axis -> if phi of vector direction + // within phi of shape, Step limited by rmax, else Step =0 + + if ((fSPhi - halfAngTolerance <= vphi) + && (vphi <= fSPhi + fDPhi + halfAngTolerance)) + { + sphi = UUtils::kInfinity; + } + else + { + sidephi = kSPhi; // arbitrary + sphi = 0.0; + } + } + if (sphi < snxt) // Order intersecttions + { + snxt = sphi; + side = sidephi; + } + } + if (srd < snxt) // Order intersections + { + snxt = srd; + side = sider; + } + } + // if (calcNorm) + { + switch (side) + { + case kRMax: + // Note: returned vector not normalised + // (divide by fRMax for Unit vector) + // + xi = p.x + snxt * v.x; + yi = p.y + snxt * v.y; + n = UVector3(xi / fRMax, yi / fRMax, 0); + validNorm = true; + break; + + case kRMin: + xi = p.x + snxt * v.x; + yi = p.y + snxt * v.y; + n = UVector3(-xi / fRMin, -yi / fRMin, 0); + validNorm = false; // Rmin is inconvex + break; + + case kSPhi: + if (fDPhi <= UUtils::kPi) + { + n = UVector3(fSinSPhi, -fCosSPhi, 0); + validNorm = true; + } + else + { + n = UVector3(fSinSPhi, -fCosSPhi, 0); + validNorm = false; + } + break; + + case kEPhi: + if (fDPhi <= UUtils::kPi) + { + n = UVector3(-fSinEPhi, fCosEPhi, 0); + validNorm = true; + } + else + { + n = UVector3(-fSinEPhi, fCosEPhi, 0); + validNorm = false; + } + break; + + case kPZ: + n = UVector3(0, 0, 1); + validNorm = true; + break; + + case kMZ: + n = UVector3(0, 0, -1); + validNorm = true; + break; + + default: + cout << std::endl; + // DumpInfo(); + std::ostringstream message; + int oldprc = message.precision(16); + message << "Undefined side for valid surface normal to solid." + << std::endl + << "Position:" << std::endl << std::endl + << "p.x = " << p.x << " mm" << std::endl + << "p.y = " << p.y << " mm" << std::endl + << "p.z = " << p.z << " mm" << std::endl << std::endl + << "Direction:" << std::endl << std::endl + << "v.x = " << v.x << std::endl + << "v.y = " << v.y << std::endl + << "v.z = " << v.z << std::endl << std::endl + << "Proposed distance :" << std::endl << std::endl + << "snxt = " << snxt << " mm" << std::endl; + message.precision(oldprc); + UUtils::Exception("UTubs::DistanceToOut(p,v,..)", "GeomSolids1002", + Warning, 1, message.str().c_str()); + break; + } + } + if (snxt < halfCarTolerance) + { + snxt = 0; + } + + return snxt; +} + +////////////////////////////////////////////////////////////////////////// +// +// Calculate distance (<=actual) to closest surface of shape from inside + +double UTubs::SafetyFromInside(const UVector3& p, bool) const +{ + double safe = 0.0, rho, safeZ; + rho = std::sqrt(p.x * p.x + p.y * p.y); + +#ifdef UDEBUG + if (Inside(p) == eOutside) + { + int oldprc = cout.precision(16); + cout << std::endl; + DumpInfo(); + cout << "Position:" << std::endl << std::endl; + cout << "p.x = " << p.x << " mm" << std::endl; + cout << "p.y = " << p.y << " mm" << std::endl; + cout << "p.z = " << p.z << " mm" << std::endl << std::endl; + cout.precision(oldprc); + UUtils::Exception("UTubs::DistanceToOut(p)", "GeomSolids1002", + Warning, 1, "Point p is outside !?"); + } +#endif + safe = SafetyFromInsideR(p, rho); + safeZ = fDz - std::fabs(p.z); + + if (safeZ < safe) + { + safe = safeZ; + } + + if (safe < 0) + { + safe = 0; + } + + return safe; +} + +////////////////////////////////////////////////////////////////////////// +// +// Stream object contents to an output stream + +UGeometryType UTubs::GetEntityType() const +{ + return std::string("Tubs"); +} + +////////////////////////////////////////////////////////////////////////// +// +// Make a clone of the object +// +VUSolid* UTubs::Clone() const +{ + return new UTubs(*this); +} + +////////////////////////////////////////////////////////////////////////// +// +// Stream object contents to an output stream + +std::ostream& UTubs::StreamInfo(std::ostream& os) const +{ + int oldprc = os.precision(16); + os << "-----------------------------------------------------------\n" + << " *** Dump for solid - " << GetName() << " ***\n" + << " ===================================================\n" + << " Solid type: UTubs\n" + << " Parameters: \n" + << " inner radius : " << fRMin << " mm \n" + << " outer radius : " << fRMax << " mm \n" + << " half length Z: " << fDz << " mm \n" + << " starting phi : " << fSPhi / (UUtils::kPi / 180.0) << " degrees \n" + << " delta phi : " << fDPhi / (UUtils::kPi / 180.0) << " degrees \n" + << "-----------------------------------------------------------\n"; + os.precision(oldprc); + + return os; +} + +///////////////////////////////////////////////////////////////////////// +// +// GetPointOnSurface + +UVector3 UTubs::GetPointOnSurface() const +{ + double xRand, yRand, zRand, phi, cosphi, sinphi, chose, + aOne, aTwo, aThr, aFou; + double rRand; + + aOne = 2.*fDz * fDPhi * fRMax; + aTwo = 2.*fDz * fDPhi * fRMin; + aThr = 0.5 * fDPhi * (fRMax * fRMax - fRMin * fRMin); + aFou = 2.*fDz * (fRMax - fRMin); + + phi = UUtils::Random(fSPhi, fSPhi + fDPhi); + cosphi = std::cos(phi); + sinphi = std::sin(phi); + + rRand = UUtils::GetRadiusInRing(fRMin, fRMax); + + if ((fSPhi == 0) && (fDPhi == 2 * UUtils::kPi)) + { + aFou = 0; + } + + chose = UUtils::Random(0., aOne + aTwo + 2.*aThr + 2.*aFou); + + if ((chose >= 0) && (chose < aOne)) + { + xRand = fRMax * cosphi; + yRand = fRMax * sinphi; + zRand = UUtils::Random(-1.*fDz, fDz); + return UVector3(xRand, yRand, zRand); + } + else if ((chose >= aOne) && (chose < aOne + aTwo)) + { + xRand = fRMin * cosphi; + yRand = fRMin * sinphi; + zRand = UUtils::Random(-1.*fDz, fDz); + return UVector3(xRand, yRand, zRand); + } + else if ((chose >= aOne + aTwo) && (chose < aOne + aTwo + aThr)) + { + xRand = rRand * cosphi; + yRand = rRand * sinphi; + zRand = fDz; + return UVector3(xRand, yRand, zRand); + } + else if ((chose >= aOne + aTwo + aThr) && (chose < aOne + aTwo + 2.*aThr)) + { + xRand = rRand * cosphi; + yRand = rRand * sinphi; + zRand = -1.*fDz; + return UVector3(xRand, yRand, zRand); + } + else if ((chose >= aOne + aTwo + 2.*aThr) + && (chose < aOne + aTwo + 2.*aThr + aFou)) + { + xRand = rRand * fCosSPhi; + yRand = rRand * fSinSPhi; + zRand = UUtils::Random(-1.*fDz, fDz); + return UVector3(xRand, yRand, zRand); + } + else + { + xRand = rRand * fCosSPhiDPhi; + yRand = rRand * fSinSPhiDPhi; + zRand = UUtils::Random(-1.*fDz, fDz); + return UVector3(xRand, yRand, zRand); + } +} + +void UTubs::Extent(UVector3& aMin, UVector3& aMax) const +{ + aMin = UVector3(-fRMax, -fRMax, -fDz); + aMax = UVector3(fRMax, fRMax, fDz); +} + +void UTubs::GetParametersList(int, double* aArray) const +{ + aArray[0] = GetInnerRadius(); + aArray[1] = GetOuterRadius(); + aArray[2] = GetZHalfLength(); + aArray[3] = GetStartPhiAngle(); + aArray[4] = GetDeltaPhiAngle(); +} diff --git a/source/geometry/solids/usolids/src/UUtils.cc b/source/geometry/solids/usolids/src/UUtils.cc index 4945f46b88a..57598d7716a 100644 --- a/source/geometry/solids/usolids/src/UUtils.cc +++ b/source/geometry/solids/usolids/src/UUtils.cc @@ -1,233 +1,233 @@ -// -// ******************************************************************** -// * This Software is part of the AIDA Unified Solids Library package * -// * See: https://aidasoft.web.cern.ch/USolids * -// ******************************************************************** -// -// $Id:$ -// -// -------------------------------------------------------------------- -// -// UUtils -// -// 19.10.12 Marek Gayer -// -------------------------------------------------------------------- - -#include -#include -#include -#include - -#include "UVector3.hh" -#include "UTransform3D.hh" -#include "UUtils.hh" -#include "VUSolid.hh" - -using namespace std; - -//______________________________________________________________________________ -void UUtils::TransformLimits(UVector3& min, UVector3& max, const UTransform3D& transformation) -{ - // The goal of this method is to convert the quantities min and max (representing the - // bounding box of a given solid in its local frame) to the main frame, using - // "transformation" - UVector3 vertices[8] = // Detemination of the vertices thanks to the extension of each solid: - { - UVector3(min.x, min.y, min.z), // 1st vertice: - UVector3(min.x, max.y, min.z), // 2nd vertice: - UVector3(max.x, max.y, min.z), - UVector3(max.x, min.y, min.z), - UVector3(min.x, min.y, max.z), - UVector3(min.x, max.y, max.z), - UVector3(max.x, max.y, max.z), - UVector3(max.x, min.y, max.z) - }; - - min.Set(kInfinity); - max.Set(-kInfinity); - - // Loop on th vertices - int limit = sizeof(vertices) / sizeof(UVector3); - for (int i = 0 ; i < limit; i++) - { - // From local frame to the gobal one: - // Current positions on the three axis: - UVector3 current = transformation.GlobalPoint(vertices[i]); - - // If need be, replacement of the min & max values: - if (current.x > max.x) max.x = current.x; - if (current.x < min.x) min.x = current.x; - - if (current.y > max.y) max.y = current.y; - if (current.y < min.y) min.y = current.y; - - if (current.z > max.z) max.z = current.z; - if (current.z < min.z) min.z = current.z; - } -} - -double UUtils::Random(double min, double max) -{ - // srand((unsigned)time(NULL)); - double number = (double) rand() / RAND_MAX; - double res = min + number * (max - min); - return res; -} - -string UUtils::ToString(int number) -{ - std::stringstream ss; - ss << number; - return ss.str(); -} - -string UUtils::ToString(double number) -{ - std::stringstream ss; - ss << number; - return ss.str(); -} - -int UUtils::FileSize(const std::string& filePath) -{ - std::streampos fsize = 0; - std::ifstream file(filePath.c_str(), std::ios::binary); - - fsize = file.tellg(); - file.seekg(0, std::ios::end); - fsize = file.tellg() - fsize; - file.close(); - - return fsize; -} - - -int UUtils::StrPos(const string& haystack, const string& needle) -{ - int sleng = haystack.length(); - int nleng = needle.length(); - - if (sleng == 0 || nleng == 0) - return -1; - - for (int i = 0, j = 0; i < sleng; j = 0, i++) - { - while (i + j < sleng && j < nleng && haystack[i + j] == needle[j]) - j++; - if (j == nleng) - return i; - } - return -1; -} -void UUtils:: Exception(const char* originOfException, - const char* exceptionCode, - ExceptionSeverity severity, - int level, - const char* description) - -{ - bool toBeAborted = true; - static const std::string es_banner - = "\n-------- EEEE ------- UException-START -------- EEEE -------\n"; - static const std::string ee_banner - = "\n-------- EEEE ------- UException-END --------- EEEE -------\n"; - static const std::string ws_banner - = "\n-------- WWWW ------- UException-START -------- WWWW -------\n"; - static const std::string we_banner - = "\n-------- WWWW -------- UException-END --------- WWWW -------\n"; - std::ostringstream message; - message << "\n*** ExceptionHandler is not defined ***\n" - << "*** Exception : " << exceptionCode << std::endl - << " issued by : " << originOfException << std::endl - << description << std::endl; - switch (severity) - { - case FatalError: - std::cerr << es_banner << message.str() << "*** Fatal Exception ***" - << ee_banner << std::endl; - break; - case FatalErrorInArguments: - std::cerr << es_banner << message.str() << "*** Fatal Error In Argument ***" - << ee_banner << std::endl; - break; - case Error: - std::cerr << es_banner << message.str() << "*** Error ***" << level - << ee_banner << std::endl; - break; - case Warning: - std::cerr << ws_banner << message.str() << "*** This is just a warning message ***" - << we_banner << std::endl; - toBeAborted = false; - break; - default: - std::cout << ws_banner << message.str() - << "*** This is just a message for your information. ***" - << we_banner << std::endl; - toBeAborted = false; - break; - } - - if (toBeAborted) - { - - std::cerr << std::endl << "*** GException: Aborting execution ***" << std::endl; - abort(); - } - - -} - - -/* -void UTessellatedSolid::ImportFromSTLFile(std::string filename) -{ -vector fFacets; - -USTL::ReadFromBinaryFile(filename, fFacets); - -int size = fFacets.size(); -for (int i = 0; i < size; ++i) -{ -UTriangularFacet *facet = fFacets[i]; -AddFacet(facet); -} -SetSolidClosed(true); -} -*/ - -/* -int size = fFacets.size(); -for (int j = 0; j < 100; ++j) //2.418 , 2.511 -for (int i = 0; i < size; ++i) -{ -UFacet &facet = *facetsi[j]; -a += facet.GetNumberOfVertices(); -} -if (a % rand() == -1) cout << a; -*/ - -/* -for (int j = 0; j < 100; ++j) //2.917 3.01 -{ -int size = fFacets.size(); -for (int i = 0; i < size; ++i) -{ -UFacet &facet = *fFacets[i]; -a += facet.GetNumberOfVertices(); -} -} -*/ - -/* -for (int j = 0; j < 100; ++j) // 2.589 -{ -std::vector::const_iterator i, begin = fFacets.begin(), end = fFacets.end(); -for (i = begin; i < end; ++i) -{ -UFacet &facet = *(*i); -a += facet.GetNumberOfVertices(); -} -} - -return location; -*/ +// +// ******************************************************************** +// * This Software is part of the AIDA Unified Solids Library package * +// * See: https://aidasoft.web.cern.ch/USolids * +// ******************************************************************** +// +// $Id:$ +// +// -------------------------------------------------------------------- +// +// UUtils +// +// 19.10.12 Marek Gayer +// -------------------------------------------------------------------- + +#include +#include +#include +#include + +#include "UVector3.hh" +#include "UTransform3D.hh" +#include "UUtils.hh" +#include "VUSolid.hh" + +using namespace std; + +//______________________________________________________________________________ +void UUtils::TransformLimits(UVector3& min, UVector3& max, const UTransform3D& transformation) +{ + // The goal of this method is to convert the quantities min and max (representing the + // bounding box of a given solid in its local frame) to the main frame, using + // "transformation" + UVector3 vertices[8] = // Detemination of the vertices thanks to the extension of each solid: + { + UVector3(min.x, min.y, min.z), // 1st vertice: + UVector3(min.x, max.y, min.z), // 2nd vertice: + UVector3(max.x, max.y, min.z), + UVector3(max.x, min.y, min.z), + UVector3(min.x, min.y, max.z), + UVector3(min.x, max.y, max.z), + UVector3(max.x, max.y, max.z), + UVector3(max.x, min.y, max.z) + }; + + min.Set(kInfinity); + max.Set(-kInfinity); + + // Loop on th vertices + int limit = sizeof(vertices) / sizeof(UVector3); + for (int i = 0 ; i < limit; i++) + { + // From local frame to the gobal one: + // Current positions on the three axis: + UVector3 current = transformation.GlobalPoint(vertices[i]); + + // If need be, replacement of the min & max values: + if (current.x > max.x) max.x = current.x; + if (current.x < min.x) min.x = current.x; + + if (current.y > max.y) max.y = current.y; + if (current.y < min.y) min.y = current.y; + + if (current.z > max.z) max.z = current.z; + if (current.z < min.z) min.z = current.z; + } +} + +double UUtils::Random(double min, double max) +{ + // srand((unsigned)time(NULL)); + double number = (double) rand() / RAND_MAX; + double res = min + number * (max - min); + return res; +} + +string UUtils::ToString(int number) +{ + std::stringstream ss; + ss << number; + return ss.str(); +} + +string UUtils::ToString(double number) +{ + std::stringstream ss; + ss << number; + return ss.str(); +} + +int UUtils::FileSize(const std::string& filePath) +{ + std::streampos fsize = 0; + std::ifstream file(filePath.c_str(), std::ios::binary); + + fsize = file.tellg(); + file.seekg(0, std::ios::end); + fsize = file.tellg() - fsize; + file.close(); + + return fsize; +} + + +int UUtils::StrPos(const string& haystack, const string& needle) +{ + int sleng = haystack.length(); + int nleng = needle.length(); + + if (sleng == 0 || nleng == 0) + return -1; + + for (int i = 0, j = 0; i < sleng; j = 0, i++) + { + while (i + j < sleng && j < nleng && haystack[i + j] == needle[j]) + j++; + if (j == nleng) + return i; + } + return -1; +} +void UUtils:: Exception(const char* originOfException, + const char* exceptionCode, + UExceptionSeverity severity, + int level, + const char* description) + +{ + bool toBeAborted = true; + static const std::string es_banner + = "\n-------- EEEE ------- UException-START -------- EEEE -------\n"; + static const std::string ee_banner + = "\n-------- EEEE ------- UException-END --------- EEEE -------\n"; + static const std::string ws_banner + = "\n-------- WWWW ------- UException-START -------- WWWW -------\n"; + static const std::string we_banner + = "\n-------- WWWW -------- UException-END --------- WWWW -------\n"; + std::ostringstream message; + message << "\n*** ExceptionHandler is not defined ***\n" + << "*** Exception : " << exceptionCode << std::endl + << " issued by : " << originOfException << std::endl + << description << std::endl; + switch (severity) + { + case FatalError: + std::cerr << es_banner << message.str() << "*** Fatal Exception ***" + << ee_banner << std::endl; + break; + case FatalErrorInArguments: + std::cerr << es_banner << message.str() << "*** Fatal Error In Argument ***" + << ee_banner << std::endl; + break; + case Error: + std::cerr << es_banner << message.str() << "*** Error ***" << level + << ee_banner << std::endl; + break; + case Warning: + std::cerr << ws_banner << message.str() << "*** This is just a warning message ***" + << we_banner << std::endl; + toBeAborted = false; + break; + default: + std::cout << ws_banner << message.str() + << "*** This is just a message for your information. ***" + << we_banner << std::endl; + toBeAborted = false; + break; + } + + if (toBeAborted) + { + + std::cerr << std::endl << "*** GException: Aborting execution ***" << std::endl; + abort(); + } + + +} + + +/* +void UTessellatedSolid::ImportFromSTLFile(std::string filename) +{ +vector fFacets; + +USTL::ReadFromBinaryFile(filename, fFacets); + +int size = fFacets.size(); +for (int i = 0; i < size; ++i) +{ +UTriangularFacet *facet = fFacets[i]; +AddFacet(facet); +} +SetSolidClosed(true); +} +*/ + +/* +int size = fFacets.size(); +for (int j = 0; j < 100; ++j) //2.418 , 2.511 +for (int i = 0; i < size; ++i) +{ +UFacet &facet = *facetsi[j]; +a += facet.GetNumberOfVertices(); +} +if (a % rand() == -1) cout << a; +*/ + +/* +for (int j = 0; j < 100; ++j) //2.917 3.01 +{ +int size = fFacets.size(); +for (int i = 0; i < size; ++i) +{ +UFacet &facet = *fFacets[i]; +a += facet.GetNumberOfVertices(); +} +} +*/ + +/* +for (int j = 0; j < 100; ++j) // 2.589 +{ +std::vector::const_iterator i, begin = fFacets.begin(), end = fFacets.end(); +for (i = begin; i < end; ++i) +{ +UFacet &facet = *(*i); +a += facet.GetNumberOfVertices(); +} +} + +return location; +*/ diff --git a/source/geometry/volumes/History b/source/geometry/volumes/History index 1c1bed7790a..bdb334c2906 100644 --- a/source/geometry/volumes/History +++ b/source/geometry/volumes/History @@ -1,4 +1,4 @@ -$Id: History 84724 2014-10-20 08:26:15Z gcosmo $ +$Id: History 88500 2015-02-24 14:28:10Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,9 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +December 11th, 2014 G.Cosmo - geomvol-V09-06-23 +- Avoid post-increment in G4NavigationLevelRep::AddAReference(). + October 18th, 2014 A.Dotti - geomvol-V09-06-22 - Corrected possible data race (reported by DRD) in G4PVReplica::InitialiseWorker(). diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.icc b/source/geometry/volumes/include/G4NavigationLevelRep.icc index 933c3e134d7..51b0c319418 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.icc +++ b/source/geometry/volumes/include/G4NavigationLevelRep.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4NavigationLevelRep.icc 67974 2013-03-13 10:17:37Z gcosmo $ +// $Id: G4NavigationLevelRep.icc 88500 2015-02-24 14:28:10Z gcosmo $ // // 1 October 1997 J.Apostolakis Initial version. // @@ -72,7 +72,7 @@ G4int G4NavigationLevelRep::GetReplicaNo() const inline void G4NavigationLevelRep::AddAReference() { - fCountRef++; + ++fCountRef; } inline diff --git a/source/global/History b/source/global/History index 124480e1fc6..17973dc7402 100644 --- a/source/global/History +++ b/source/global/History @@ -17,6 +17,20 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 18, 2014 G.Cosmo (global-V09-06-86) +- G4FPEDetection.hh: added call to 'sigfillset' to clear any signals + before any use of sigset_t in InvalidOperationDetection() for both + MacOS and Linux, as suggested in specifications. + +November 17, 2014 M.Kelsey +- G4FPEDetection.hh: restrict FPE trapping to GCC only, excluding CLang. + Addresses problem with Qt generating an apparent FPE deep inside its + code with MacOSX CLang builds. + +November 5, 2014 A.Dotti +- Added missing G4GLOB_DLL specification for DLL import/export to + G4CacheDetails specialization of cache reference for double. + September 23, 2014 G.Cosmo (global-V09-06-85) - Use G4Exp, G4Log and G4Pow to speedup G4JTPolynomialSolver. diff --git a/source/global/management/include/G4CacheDetails.hh b/source/global/management/include/G4CacheDetails.hh index aa6606d105f..ad11292ac2d 100644 --- a/source/global/management/include/G4CacheDetails.hh +++ b/source/global/management/include/G4CacheDetails.hh @@ -126,7 +126,7 @@ public: private: typedef std::vector cache_container; - static G4ThreadLocal std::vector *cache; + G4GLOB_DLL static G4ThreadLocal std::vector *cache; }; diff --git a/source/global/management/include/G4FPEDetection.hh b/source/global/management/include/G4FPEDetection.hh index ec9eb15fe5c..239cd312997 100644 --- a/source/global/management/include/G4FPEDetection.hh +++ b/source/global/management/include/G4FPEDetection.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4FPEDetection.hh 70818 2013-06-06 08:10:15Z gcosmo $ +// $Id: G4FPEDetection.hh 88528 2015-02-25 15:23:06Z gcosmo $ // // // -*- C++ -*- @@ -43,8 +43,8 @@ #include #include /* abort(), exit() */ +#if (defined(__GNUC__) && !defined(__clang__)) #ifdef __linux__ -#ifdef __GNUC__ #include #include #include @@ -153,14 +153,14 @@ //(void) feenableexcept( FE_OVERFLOW ); //(void) feenableexcept( FE_UNDERFLOW ); + sigfillset(&termaction.sa_mask); sigdelset(&termaction.sa_mask,SIGFPE); termaction.sa_sigaction=TerminationSignalHandler; termaction.sa_flags=SA_SIGINFO; sigaction(SIGFPE, &termaction, &oldaction); } -#endif -#elif __MACH__ /* MacOSX */ +#elif defined(__MACH__) /* MacOSX */ #include #include @@ -298,6 +298,7 @@ // fedisableexcept( FE_OVERFLOW ); // fedisableexcept( FE_UNDERFLOW ); + sigfillset(&termaction.sa_mask); sigdelset(&termaction.sa_mask,SIGFPE); termaction.sa_sigaction=TerminationSignalHandler; termaction.sa_flags=SA_SIGINFO; @@ -307,6 +308,9 @@ static void InvalidOperationDetection() {;} -#endif +#endif /* Linus or MacOSX */ +#else /* Not GCC */ + static void InvalidOperationDetection() {;} #endif +#endif /* G4FPEDetection_h */ diff --git a/source/global/management/include/G4Version.hh b/source/global/management/include/G4Version.hh index 2f58c2f1db1..d0e0916ddb1 100644 --- a/source/global/management/include/G4Version.hh +++ b/source/global/management/include/G4Version.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4Version.hh 84633 2014-10-17 10:34:23Z gcosmo $ +// $Id: G4Version.hh 88524 2015-02-25 15:03:25Z gcosmo $ // GEANT4 tag $Name:$ // // Version information @@ -46,11 +46,11 @@ // |--> patch number #ifndef G4VERSION_NUMBER -#define G4VERSION_NUMBER 1003 +#define G4VERSION_NUMBER 1004 #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-10-00-patch-03 $" +#define G4VERSION_TAG "$Name: geant4-10-00-patch-04 $" #endif // as variables @@ -58,10 +58,10 @@ #include "G4String.hh" #ifdef G4MULTITHREADED -static const G4String G4Version = "$Name: geant4-10-00-patch-03 [MT]$"; +static const G4String G4Version = "$Name: geant4-10-00-patch-04 [MT]$"; #else -static const G4String G4Version = "$Name: geant4-10-00-patch-03 $"; +static const G4String G4Version = "$Name: geant4-10-00-patch-04 $"; #endif -static const G4String G4Date = "(31-October-2014)"; +static const G4String G4Date = "(6-March-2015)"; #endif diff --git a/source/persistency/gdml/History b/source/persistency/gdml/History index 81260cd1f69..f148c10c7e8 100644 --- a/source/persistency/gdml/History +++ b/source/persistency/gdml/History @@ -1,4 +1,4 @@ -$Id: History 81843 2014-06-06 09:11:11Z gcosmo $ +$Id: History 88498 2015-02-24 13:54:04Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,17 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +24 November 2014 Gabriele Cosmo (gdml-V09-06-11) +- Fixed typo in G4GDMLWriteSolids::BooleanWrite() for the case of repeated + displacements of the reference solid in the same Boolean operation (issue + reported by ATLAS). + +10 November 2014 Witold Pokorski +- Correction to G4GDMLReadMaterials::MixtureRead() to revert order of + reading (first elements then materials) for mixtures by fraction; + corrects referencing for cases when elements and materials may carry + the same name (case reported by ATLAS). + 21 May 2014 Gabriele Cosmo (gdml-V09-06-10) - Added better description to fatal exception in case document content imported happens to be empty in G4GDMLRead::Read(). diff --git a/source/persistency/gdml/src/G4GDMLReadMaterials.cc b/source/persistency/gdml/src/G4GDMLReadMaterials.cc index 1e7ec91d4dc..35031d2b650 100644 --- a/source/persistency/gdml/src/G4GDMLReadMaterials.cc +++ b/source/persistency/gdml/src/G4GDMLReadMaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4GDMLReadMaterials.cc 70764 2013-06-05 12:54:37Z gcosmo $ +// $Id: G4GDMLReadMaterials.cc 88498 2015-02-24 13:54:04Z gcosmo $ // GEANT4 tag $ Name:$ // // class G4GDMLReadMaterials Implementation @@ -581,8 +581,8 @@ MixtureRead(const xercesc::DOMElement *const mixtureElement, G4Material *materialPtr = GetMaterial(GenerateName(ref,true), false); G4Element *elementPtr = GetElement(GenerateName(ref,true), false); - if (materialPtr != 0) { material->AddMaterial(materialPtr,n); } else - if (elementPtr != 0) { material->AddElement(elementPtr,n); } + if (elementPtr != 0) { material->AddElement(elementPtr,n); } else + if (materialPtr != 0) { material->AddMaterial(materialPtr,n); } if ((materialPtr == 0) && (elementPtr == 0)) { diff --git a/source/persistency/gdml/src/G4GDMLWriteSolids.cc b/source/persistency/gdml/src/G4GDMLWriteSolids.cc index 60902933a47..2740a53b673 100644 --- a/source/persistency/gdml/src/G4GDMLWriteSolids.cc +++ b/source/persistency/gdml/src/G4GDMLWriteSolids.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4GDMLWriteSolids.cc 81843 2014-06-06 09:11:11Z gcosmo $ +// $Id: G4GDMLWriteSolids.cc 88498 2015-02-24 13:54:04Z gcosmo $ // // class G4GDMLWriteSolids Implementation // @@ -115,7 +115,7 @@ BooleanWrite(xercesc::DOMElement* solElement, if (G4DisplacedSolid* disp = dynamic_cast(firstPtr)) { firstpos += disp->GetObjectTranslation(); - firstrot += firstrot + GetAngles(disp->GetObjectRotation()); + firstrot += GetAngles(disp->GetObjectRotation()); firstPtr = disp->GetConstituentMovedSolid(); displaced++; continue; diff --git a/source/physics_lists/constructors/hadron_inelastic/History b/source/physics_lists/constructors/hadron_inelastic/History index a454296d06d..f79d3e84cb1 100644 --- a/source/physics_lists/constructors/hadron_inelastic/History +++ b/source/physics_lists/constructors/hadron_inelastic/History @@ -1,4 +1,4 @@ -$Id: History 79165 2014-02-19 15:54:36Z gcosmo $ +$Id: History 88488 2015-02-24 10:46:32Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,9 @@ introduced in the code and keeptrack of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +28-Jun-2014, Michael Kelsey (phys-ctor-hinelastic-V09-06-22) +- Add "if (!tpdata) return;" to all dtors, to avoid segfaults. + 29-Jan-2014, Gunter Folger (phys-ctor-hinelastic-V09-06-21) - Removed from photolepton_hadron/muon_nuclear from sources.cmake diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT.cc index e7f8669dfc6..0b65864ec80 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsFTFP_BERT.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsFTFP_BERT.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -143,29 +143,31 @@ void G4HadronPhysicsFTFP_BERT::CreateModels() G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT() { - delete tpdata->theNeutrons; - delete tpdata->theBertiniNeutron; - delete tpdata->theFTFPNeutron; - - delete tpdata->thePiK; - delete tpdata->theBertiniPiK; - delete tpdata->theFTFPPiK; + if (tpdata) { + delete tpdata->theNeutrons; + delete tpdata->theBertiniNeutron; + delete tpdata->theFTFPNeutron; + + delete tpdata->thePiK; + delete tpdata->theBertiniPiK; + delete tpdata->theFTFPPiK; + + delete tpdata->thePro; + delete tpdata->theBertiniPro; + delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theBertiniPro; - delete tpdata->theFTFPPro; + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - //Note that here we need to set to 0 the pointer - //since tpdata is static and if thread are "reused" - //it can be problematic - delete tpdata; tpdata = 0; + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + + //Note that here we need to set to 0 the pointer + //since tpdata is static and if thread are "reused" + //it can be problematic + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsFTFP_BERT::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_HP.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_HP.cc index e424fac8543..96a3ecfa616 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_HP.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_HP.cc @@ -138,26 +138,27 @@ void G4HadronPhysicsFTFP_BERT_HP::CreateModels() G4HadronPhysicsFTFP_BERT_HP::~G4HadronPhysicsFTFP_BERT_HP() { - delete tpdata->theNeutrons; - delete tpdata->theBertiniNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theHPNeutron; - - delete tpdata->thePiK; - delete tpdata->theBertiniPiK; - delete tpdata->theFTFPPiK; + if (tpdata) { + delete tpdata->theNeutrons; + delete tpdata->theBertiniNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theHPNeutron; - delete tpdata->thePro; - delete tpdata->theBertiniPro; - delete tpdata->theFTFPPro; - - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + delete tpdata->thePiK; + delete tpdata->theBertiniPiK; + delete tpdata->theFTFPPiK; + + delete tpdata->thePro; + delete tpdata->theBertiniPro; + delete tpdata->theFTFPPro; + + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; + + delete tpdata->xsNeutronCaptureXS; + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsFTFP_BERT_HP::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_TRV.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_TRV.cc index 1cc007db44b..8d9c791fdc9 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_TRV.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTFP_BERT_TRV.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsFTFP_BERT_TRV.cc 73040 2013-08-15 09:36:57Z gcosmo $ +// $Id: G4HadronPhysicsFTFP_BERT_TRV.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -155,26 +155,28 @@ void G4HadronPhysicsFTFP_BERT_TRV::CreateModels() G4HadronPhysicsFTFP_BERT_TRV::~G4HadronPhysicsFTFP_BERT_TRV() { - delete tpdata->theNeutrons; - delete tpdata->theBertiniNeutron; - delete tpdata->theFTFPNeutron; + if (tpdata) { + delete tpdata->theNeutrons; + delete tpdata->theBertiniNeutron; + delete tpdata->theFTFPNeutron; - delete tpdata->thePiK; - delete tpdata->theBertiniPiK; - delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBertiniPiK; + delete tpdata->theFTFPPiK; - delete tpdata->thePro; - delete tpdata->theBertiniPro; - delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theBertiniPro; + delete tpdata->theFTFPPro; - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; + + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; - delete tpdata; tpdata = 0; + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsFTFP_BERT_TRV::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTF_BIC.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTF_BIC.cc index 123f60b6356..09ff62f65ea 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTF_BIC.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsFTF_BIC.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsFTF_BIC.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsFTF_BIC.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -141,30 +141,31 @@ void G4HadronPhysicsFTF_BIC::CreateModels() G4HadronPhysicsFTF_BIC::~G4HadronPhysicsFTF_BIC() { - delete tpdata->theFTFBinaryNeutron; - delete tpdata->theBinaryNeutron; - delete tpdata->theNeutrons; - - delete tpdata->theFTFBinaryPro; - delete tpdata->theBinaryPro; - delete tpdata->thePro; - - delete tpdata->theFTFBinaryPion; - delete tpdata->theBICPion; - delete tpdata->thePion; - - delete tpdata->theFTFBinaryKaon; - delete tpdata->theBertiniKaon; - delete tpdata->theKaon; - - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theFTFBinaryNeutron; + delete tpdata->theBinaryNeutron; + delete tpdata->theNeutrons; + + delete tpdata->theFTFBinaryPro; + delete tpdata->theBinaryPro; + delete tpdata->thePro; + + delete tpdata->theFTFBinaryPion; + delete tpdata->theBICPion; + delete tpdata->thePion; + + delete tpdata->theFTFBinaryKaon; + delete tpdata->theBertiniKaon; + delete tpdata->theKaon; + + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; + + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsFTF_BIC::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT.cc index 9f57ae9856e..f8230773308 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGSP_BERT.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsQGSP_BERT.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -167,25 +167,26 @@ void G4HadronPhysicsQGSP_BERT::CreateModels() G4HadronPhysicsQGSP_BERT::~G4HadronPhysicsQGSP_BERT() { - delete tpdata->theBertiniNeutron; - delete tpdata->theQGSPNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theNeutrons; - delete tpdata->theBertiniPiK; - delete tpdata->theQGSPPiK; - delete tpdata->theFTFPPiK; - delete tpdata->thePiK; - delete tpdata->theBertiniPro; - delete tpdata->theQGSPPro; - delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theFTFPAntiBaryon; - delete tpdata->theAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theBertiniNeutron; + delete tpdata->theQGSPNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theNeutrons; + delete tpdata->theBertiniPiK; + delete tpdata->theQGSPPiK; + delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBertiniPro; + delete tpdata->theQGSPPro; + delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theFTFPAntiBaryon; + delete tpdata->theAntiBaryon; + delete tpdata->theHyperon; + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsQGSP_BERT::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT_HP.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT_HP.cc index deb20fd5d05..717f7d18640 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT_HP.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BERT_HP.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGSP_BERT_HP.cc 73040 2013-08-15 09:36:57Z gcosmo $ +// $Id: G4HadronPhysicsQGSP_BERT_HP.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -165,25 +165,27 @@ void G4HadronPhysicsQGSP_BERT_HP::CreateModels() G4HadronPhysicsQGSP_BERT_HP::~G4HadronPhysicsQGSP_BERT_HP() { - delete tpdata->theHPNeutron; - delete tpdata->theBertiniNeutron; - delete tpdata->theQGSPNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theNeutrons; - delete tpdata->theBertiniPiK; - delete tpdata->theQGSPPiK; - delete tpdata->theFTFPPiK; - delete tpdata->thePiK; - delete tpdata->theBertiniPro; - delete tpdata->theQGSPPro; - delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theFTFPAntiBaryon; - delete tpdata->theAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theHPNeutron; + delete tpdata->theBertiniNeutron; + delete tpdata->theQGSPNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theNeutrons; + delete tpdata->theBertiniPiK; + delete tpdata->theQGSPPiK; + delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBertiniPro; + delete tpdata->theQGSPPro; + delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theFTFPAntiBaryon; + delete tpdata->theAntiBaryon; + delete tpdata->theHyperon; + delete tpdata->xsNeutronCaptureXS; + + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsQGSP_BERT_HP::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC.cc index e1641c8950e..ce2ac6098c9 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGSP_BIC.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsQGSP_BIC.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -157,24 +157,26 @@ void G4HadronPhysicsQGSP_BIC::CreateModels() G4HadronPhysicsQGSP_BIC::~G4HadronPhysicsQGSP_BIC() { - delete tpdata->theBinaryNeutron; - delete tpdata->theQGSPNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theBertiniPiK; - delete tpdata->theQGSPPiK; - delete tpdata->theFTFPPiK; - delete tpdata->thePiK; - delete tpdata->theBinaryPro; - delete tpdata->theQGSPPro; - delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theFTFPAntiBaryon; - delete tpdata->theAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata =0 ; + if (tpdata) { + delete tpdata->theBinaryNeutron; + delete tpdata->theQGSPNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theBertiniPiK; + delete tpdata->theQGSPPiK; + delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBinaryPro; + delete tpdata->theQGSPPro; + delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theFTFPAntiBaryon; + delete tpdata->theAntiBaryon; + delete tpdata->theHyperon; + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + + delete tpdata; tpdata =0 ; + } } void G4HadronPhysicsQGSP_BIC::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC_HP.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC_HP.cc index f5c60880feb..cfb1133be81 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC_HP.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_BIC_HP.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGSP_BIC_HP.cc 73040 2013-08-15 09:36:57Z gcosmo $ +// $Id: G4HadronPhysicsQGSP_BIC_HP.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -159,24 +159,26 @@ void G4HadronPhysicsQGSP_BIC_HP::CreateModels() G4HadronPhysicsQGSP_BIC_HP::~G4HadronPhysicsQGSP_BIC_HP() { - delete tpdata->theHPNeutron; - delete tpdata->theBinaryNeutron; - delete tpdata->theQGSPNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theBertiniPiK; - delete tpdata->theQGSPPiK; - delete tpdata->theFTFPPiK; - delete tpdata->thePiK; - delete tpdata->theBinaryPro; - delete tpdata->theQGSPPro; - delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theFTFPAntiBaryon; - delete tpdata->theAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theHPNeutron; + delete tpdata->theBinaryNeutron; + delete tpdata->theQGSPNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theBertiniPiK; + delete tpdata->theQGSPPiK; + delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBinaryPro; + delete tpdata->theQGSPPro; + delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theFTFPAntiBaryon; + delete tpdata->theAntiBaryon; + delete tpdata->theHyperon; + delete tpdata->xsNeutronCaptureXS; + + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsQGSP_BIC_HP::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_FTFP_BERT.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_FTFP_BERT.cc index 206f0d53b75..d5f2a6ab0b5 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_FTFP_BERT.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGSP_FTFP_BERT.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGSP_FTFP_BERT.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsQGSP_FTFP_BERT.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -171,29 +171,31 @@ void G4HadronPhysicsQGSP_FTFP_BERT::CreateModels() G4HadronPhysicsQGSP_FTFP_BERT::~G4HadronPhysicsQGSP_FTFP_BERT() { - delete tpdata->theQGSPNeutron; - delete tpdata->theFTFPNeutron; - delete tpdata->theBertiniNeutron; - delete tpdata->theNeutrons; - - delete tpdata->theQGSPPro; - delete tpdata->theFTFPPro; - delete tpdata->thePro; - delete tpdata->theBertiniPro; - - delete tpdata->theQGSPPiK; - delete tpdata->theFTFPPiK; - delete tpdata->theBertiniPiK; - delete tpdata->thePiK; - - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theQGSPNeutron; + delete tpdata->theFTFPNeutron; + delete tpdata->theBertiniNeutron; + delete tpdata->theNeutrons; + + delete tpdata->theQGSPPro; + delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theBertiniPro; + + delete tpdata->theQGSPPiK; + delete tpdata->theFTFPPiK; + delete tpdata->theBertiniPiK; + delete tpdata->thePiK; + + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; + + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsQGSP_FTFP_BERT::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGS_BIC.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGS_BIC.cc index f1fa6901292..fa8afc9e770 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGS_BIC.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsQGS_BIC.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsQGS_BIC.cc 76703 2013-11-14 10:29:11Z gcosmo $ +// $Id: G4HadronPhysicsQGS_BIC.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -176,30 +176,32 @@ void G4HadronPhysicsQGS_BIC::CreateModels() G4HadronPhysicsQGS_BIC::~G4HadronPhysicsQGS_BIC() { - delete tpdata->theBinaryNeutron; - delete tpdata->theQGSBinaryNeutron; - delete tpdata->theFTFBinaryNeutron; - delete tpdata->theNeutrons; - delete tpdata->theQGSBinaryPion; - delete tpdata->theFTFBinaryPion; - delete tpdata->theBertiniPion; - delete tpdata->theBinaryPion; - delete tpdata->thePion; - delete tpdata->theQGSBinaryKaon; - delete tpdata->theFTFBinaryKaon; - delete tpdata->theBertiniKaon; - delete tpdata->theKaon; - delete tpdata->theBinaryPro; - delete tpdata->theQGSBinaryPro; - delete tpdata->theFTFBinaryPro; - delete tpdata->thePro; - delete tpdata->theFTFPAntiBaryon; - delete tpdata->theAntiBaryon; - delete tpdata->theHyperon; - delete tpdata->xsNeutronInelasticXS; - delete tpdata->xsNeutronCaptureXS; - - delete tpdata; tpdata = 0; + if (tpdata) { + delete tpdata->theBinaryNeutron; + delete tpdata->theQGSBinaryNeutron; + delete tpdata->theFTFBinaryNeutron; + delete tpdata->theNeutrons; + delete tpdata->theQGSBinaryPion; + delete tpdata->theFTFBinaryPion; + delete tpdata->theBertiniPion; + delete tpdata->theBinaryPion; + delete tpdata->thePion; + delete tpdata->theQGSBinaryKaon; + delete tpdata->theFTFBinaryKaon; + delete tpdata->theBertiniKaon; + delete tpdata->theKaon; + delete tpdata->theBinaryPro; + delete tpdata->theQGSBinaryPro; + delete tpdata->theFTFBinaryPro; + delete tpdata->thePro; + delete tpdata->theFTFPAntiBaryon; + delete tpdata->theAntiBaryon; + delete tpdata->theHyperon; + delete tpdata->xsNeutronInelasticXS; + delete tpdata->xsNeutronCaptureXS; + + delete tpdata; tpdata = 0; + } } void G4HadronPhysicsQGS_BIC::ConstructParticle() diff --git a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsShielding.cc b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsShielding.cc index c1c03b3fe33..e13dd04605c 100644 --- a/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsShielding.cc +++ b/source/physics_lists/constructors/hadron_inelastic/src/G4HadronPhysicsShielding.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronPhysicsShielding.cc 73040 2013-08-15 09:36:57Z gcosmo $ +// $Id: G4HadronPhysicsShielding.cc 88488 2015-02-24 10:46:32Z gcosmo $ // //--------------------------------------------------------------------------- // @@ -170,31 +170,33 @@ void G4HadronPhysicsShielding::CreateModels() G4HadronPhysicsShielding::~G4HadronPhysicsShielding() { - delete tpdata->theNeutrons; - delete tpdata->theBertiniNeutron; - delete tpdata->theFTFPNeutron; - //delete tpdata->theHPNeutron; - delete tpdata->theLENeutron; + if (tpdata) { + delete tpdata->theNeutrons; + delete tpdata->theBertiniNeutron; + delete tpdata->theFTFPNeutron; + //delete tpdata->theHPNeutron; + delete tpdata->theLENeutron; - delete tpdata->thePiK; - delete tpdata->theBertiniPiK; - delete tpdata->theFTFPPiK; + delete tpdata->thePiK; + delete tpdata->theBertiniPiK; + delete tpdata->theFTFPPiK; - delete tpdata->thePro; - delete tpdata->theBertiniPro; - delete tpdata->theFTFPPro; + delete tpdata->thePro; + delete tpdata->theBertiniPro; + delete tpdata->theFTFPPro; - delete tpdata->theHyperon; - delete tpdata->theAntiBaryon; - delete tpdata->theFTFPAntiBaryon; - - delete tpdata->theBGGxsNeutron; - delete tpdata->theNeutronHPJENDLHEInelastic; - delete tpdata->theBGGxsProton; - - delete tpdata->xsNeutronCaptureXS; + delete tpdata->theHyperon; + delete tpdata->theAntiBaryon; + delete tpdata->theFTFPAntiBaryon; + + delete tpdata->theBGGxsNeutron; + delete tpdata->theNeutronHPJENDLHEInelastic; + delete tpdata->theBGGxsProton; + + delete tpdata->xsNeutronCaptureXS; - delete tpdata; tpdata=0; + delete tpdata; tpdata=0; + } } void G4HadronPhysicsShielding::ConstructParticle() diff --git a/source/physics_lists/constructors/limiters/History b/source/physics_lists/constructors/limiters/History index 6d184b636ad..53ff1772951 100644 --- a/source/physics_lists/constructors/limiters/History +++ b/source/physics_lists/constructors/limiters/History @@ -1,4 +1,4 @@ -$Id: History 84518 2014-10-16 15:24:33Z gcosmo $ +$Id: History 88487 2015-02-24 10:26:29Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ introduced in the code and keeptrack of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +20-Jan-2015, Makoto Asai (phys-ctor-limiters-V09-06-17) +- Fix G4ParallelWorldProcess.cc to correctly use the new method + SetProcessOrderingToSecond(). + 05-Aug-2014, Vladimir Ivanchenko (phys-ctor-limiters-V09-06-16) - G4NeutronTrackingCut - register G4NeutronKiller in G4HadronicProcessStore - improved log and process deleted at exit diff --git a/source/physics_lists/constructors/limiters/src/G4ParallelWorldPhysics.cc b/source/physics_lists/constructors/limiters/src/G4ParallelWorldPhysics.cc index f95607da80e..f0fcf0ec492 100644 --- a/source/physics_lists/constructors/limiters/src/G4ParallelWorldPhysics.cc +++ b/source/physics_lists/constructors/limiters/src/G4ParallelWorldPhysics.cc @@ -89,7 +89,7 @@ void G4ParallelWorldPhysics::ConstructProcess() pmanager->AddProcess(theParallelWorldProcess); if(theParallelWorldProcess->IsAtRestRequired(particle)) {pmanager->SetProcessOrdering(theParallelWorldProcess, idxAtRest, 9999);} - pmanager->SetProcessOrdering(theParallelWorldProcess, idxAlongStep, 1); + pmanager->SetProcessOrderingToSecond(theParallelWorldProcess, idxAlongStep); pmanager->SetProcessOrdering(theParallelWorldProcess, idxPostStep, 9999); } } diff --git a/source/physics_lists/lists/History b/source/physics_lists/lists/History index 28cacd6c74d..04ad196687a 100644 --- a/source/physics_lists/lists/History +++ b/source/physics_lists/lists/History @@ -1,4 +1,4 @@ -$Id: History 82135 2014-06-11 10:48:08Z gcosmo $ +$Id: History 88486 2015-02-24 10:21:35Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ introduced in the code and keeptrack of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +17-Feb-2015, Davide Mancusi (phys-lists-V09-06-23) +- INCLXXPhysicsListHelper: do not use G4NeutronTrackingCut for *_HP physics + lists + 10-Jun-2014, V.Ivanchenko (phys-lists-V09-06-22) - INCLXXPhysicsListHelper - for the case of HP set cut on proton to zero to simulate all recoils from elastic scattering diff --git a/source/physics_lists/lists/include/INCLXXPhysicsListHelper.icc b/source/physics_lists/lists/include/INCLXXPhysicsListHelper.icc index e2887a784bf..ecbb2d0a5b6 100644 --- a/source/physics_lists/lists/include/INCLXXPhysicsListHelper.icc +++ b/source/physics_lists/lists/include/INCLXXPhysicsListHelper.icc @@ -106,7 +106,8 @@ template TINCLXXPhysicsListHelperRegisterPhysics( new G4IonINCLXXPhysics(ver)); // Neutron tracking cut - this->RegisterPhysics( new G4NeutronTrackingCut(ver)); + if(!withNeutronHP) + this->RegisterPhysics( new G4NeutronTrackingCut(ver)); } diff --git a/source/processes/hadronic/management/History b/source/processes/hadronic/management/History index 465303b1acc..1c4c935ff38 100644 --- a/source/processes/hadronic/management/History +++ b/source/processes/hadronic/management/History @@ -14,6 +14,11 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +19 November 2014 Gunter Folger (hadr-man-V09-06-05) +----------------------------------------------------------- +- G4HadronicProcess::CheckResult(): Add check for dynamic mass + to correspond to PDG mass within ~10%. + 03 February 2014 Gunter Folger (hadr-man-V09-06-04) --------------------------------------------------- - G4HadronicProcess: in EnergyMomentumCheck... add printout of 3momentum diff --git a/source/processes/hadronic/management/src/G4HadronicProcess.cc b/source/processes/hadronic/management/src/G4HadronicProcess.cc index 91c5c581b4d..3fa739143d0 100644 --- a/source/processes/hadronic/management/src/G4HadronicProcess.cc +++ b/source/processes/hadronic/management/src/G4HadronicProcess.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronicProcess.cc 79196 2014-02-20 11:13:11Z gcosmo $ +// $Id: G4HadronicProcess.cc 88559 2015-02-26 15:13:55Z gcosmo $ // // ------------------------------------------------------------------- // @@ -650,13 +650,37 @@ G4HadFinalState* G4HadronicProcess::CheckResult(const G4HadProjectile & aPro,con } } for (G4int i = 0; i < nSec; i++) { - finalE += result->GetSecondary(i)->GetParticle()->GetTotalEnergy(); - } + G4DynamicParticle *pdyn=result->GetSecondary(i)->GetParticle(); + finalE += pdyn->GetTotalEnergy(); + G4double mass_pdg=pdyn->GetDefinition()->GetPDGMass(); + G4double mass_dyn=pdyn->GetMass(); + if ( std::abs(mass_pdg - mass_dyn) > 0.1*mass_pdg + 1.*MeV){ + result->Clear(); + result = 0; + G4ExceptionDescription desc; + desc << "Warning: Secondary with off-shell dynamic mass detected: " << G4endl + << " " << pdyn->GetDefinition()->GetParticleName() + << ", PDG mass: " << mass_pdg << ", dynamic mass: "<< mass_dyn << G4endl + << (epReportLevel<0 ? "abort the event" : "re-sample the interaction") << G4endl + << " Process / Model: " << GetProcessName()<< " / " + << theModel->GetModelName() << G4endl + << " Primary: " << aPro.GetDefinition()->GetParticleName() + << " (" << aPro.GetDefinition()->GetPDGEncoding() << "), " + << " E= " << aPro.Get4Momentum().e() + << ", target nucleus (" << aNucleus.GetZ_asInt() << ", " + << aNucleus.GetA_asInt() << ")" << G4endl; + G4Exception("G4HadronicProcess:CheckResult()", "had012", + epReportLevel<0 ? EventMustBeAborted : JustWarning,desc); + // must return here..... + return result; + } + } G4double deltaE= nuclearMass + aPro.GetTotalEnergy() - finalE; std::pair checkLevels = theModel->GetFatalEnergyCheckLevels(); // (relative, absolute) if (std::abs(deltaE) > checkLevels.second && std::abs(deltaE) > checkLevels.first*aPro.GetKineticEnergy()){ // do not delete result, this is a pointer to a data member; + result->Clear(); result=0; G4ExceptionDescription desc; desc << "Warning: Bad energy non-conservation detected, will " diff --git a/source/processes/hadronic/models/cascade/History b/source/processes/hadronic/models/cascade/History index 50dfc718ae6..10a20bc72cc 100644 --- a/source/processes/hadronic/models/cascade/History +++ b/source/processes/hadronic/models/cascade/History @@ -15,6 +15,17 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +19 November 2014 M. Kelsey (hadr-casc-V09-06-57) +------------------------------------------------- +- G4CascadeInterface.cc: Fix parentheses in retryInelasticNucleus() + expression for conditional-compilation flag (does not affect defaults). + +18 November 2014 M. Kelsey (hadr-casc-V09-06-56) +------------------------------------------------- +- G4CascadeInterface.cc,.hh: Fix possible infinite-loop condition where + (nTries >= maxTries) and momentum balance fails, by regrouping conditions + in retryInelasticNucleus(). + 23 May 2014 M. Kelsey (hadr-casc-V09-06-55) -------------------------------------------- - G4InuclNuclei.cc: Avoid FPE in setExcitationEnergy() for zero Ekin. diff --git a/source/processes/hadronic/models/cascade/cascade/include/G4CascadeInterface.hh b/source/processes/hadronic/models/cascade/cascade/include/G4CascadeInterface.hh index 8cd29f16e37..41c1090cf0b 100644 --- a/source/processes/hadronic/models/cascade/cascade/include/G4CascadeInterface.hh +++ b/source/processes/hadronic/models/cascade/cascade/include/G4CascadeInterface.hh @@ -56,6 +56,8 @@ // Remove local verboseLevel; shadows base class data member. // 20130501 M. Kelsey -- Add static initializer to created shared objects. // 20130628 M. Kelsey -- Address Coverity warnings about copy operations. +// 20140116 M. Kelsey -- Move statics to const data members to avoid weird +// interactions with MT. #ifndef G4CASCADEINTERFACE_H #define G4CASCADEINTERFACE_H 1 @@ -157,8 +159,8 @@ private: return (this != &right); } - static const G4String randomFile; // Filename to capture random seeds - static const G4int maximumTries; // Number of iterations for inelastic + const G4String randomFile; // Filename to capture random seeds + const G4int maximumTries; // Number of iterations for inelastic G4int numberOfTries; diff --git a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc index 3b335e6fc87..acd29274723 100644 --- a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc +++ b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc @@ -97,6 +97,9 @@ // 20120822 M. Kelsey -- Move envvars to G4CascadeParameters. // 20130508 D. Wright -- Add support for muon capture // 20130804 M. Kelsey -- Fix bug #1513 -- "(Z=1)" in boolean expression +// 20140116 M. Kelsey -- Move statics to const data members to avoid weird +// interactions with MT. +// 20140929 M. Kelsey -- Explicitly call useCascadeDeexcitation() in ctor #include #include @@ -135,27 +138,22 @@ typedef std::vector::const_iterator particleIterator; typedef std::vector::const_iterator nucleiIterator; -// Filename to capture random seed, if specified by user at runtime - -const G4String G4CascadeInterface::randomFile = G4CascadeParameters::randomFile(); - -// Maximum number of iterations allowed for inelastic collision attempts - -const G4int G4CascadeInterface::maximumTries = 20; - - // Constructor and destrutor G4CascadeInterface::G4CascadeInterface(const G4String& name) - : G4VIntraNuclearTransportModel(name), numberOfTries(0), + : G4VIntraNuclearTransportModel(name), + randomFile(G4CascadeParameters::randomFile()), + maximumTries(20), numberOfTries(0), collider(new G4InuclCollider), balance(new G4CascadeCheckBalance(name)), bullet(0), target(0), output(new G4CollisionOutput) { SetEnergyMomentumCheckLevels(5*perCent, 10*MeV); balance->setLimits(5*perCent, 10*MeV/GeV); // Bertini internal units - // Description(); // Model description - this->SetVerboseLevel(G4CascadeParameters::verbose()); - if (G4CascadeParameters::usePreCompound()) usePreCompoundDeexcitation(); + + if (G4CascadeParameters::usePreCompound()) + usePreCompoundDeexcitation(); + else + useCascadeDeexcitation(); } G4CascadeInterface::~G4CascadeInterface() { @@ -735,18 +733,19 @@ G4bool G4CascadeInterface::retryInelasticNucleus() const { << G4endl; #endif - return ( ((numberOfTries < maximumTries) && - (npart != 0) && + return ( (numberOfTries < maximumTries) && + ( ((npart != 0) && #ifdef G4CASCADE_COULOMB_DEV - (coulombBarrierViolation() && npart+nfrag > 2) + (coulombBarrierViolation() && npart+nfrag > 2) #else - (npart+nfrag < 3 && firstOut == bullet->getDefinition()) + (npart+nfrag < 3 && firstOut == bullet->getDefinition()) #endif - ) + ) #ifndef G4CASCADE_SKIP_ECONS - || (!balance->okay()) + || (!balance->okay()) #endif - ); + ) + ); } diff --git a/source/processes/hadronic/stopping/History b/source/processes/hadronic/stopping/History index f1717b77634..5174c7e2c52 100644 --- a/source/processes/hadronic/stopping/History +++ b/source/processes/hadronic/stopping/History @@ -14,6 +14,11 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +08 December 2014 V. Ivantchenko (hadr-stopping-V09-06-14) +-------------------------------------------------------------------- +- G4HadronStoppingProcess, G4MuonMinusBoundDecay: fixed time of muon + nuclear capture secondaries (fix #1695). + 27 May 2014 V. Ivantchenko (hadr-stopping-V09-06-13) -------------------------------------------------------------------- - G4MuonMinusCaptureAtRest, G4AntiNeutronAnnihilationAtRest - diff --git a/source/processes/hadronic/stopping/src/G4HadronStoppingProcess.cc b/source/processes/hadronic/stopping/src/G4HadronStoppingProcess.cc index 34c09b01fa3..2fa141901f5 100644 --- a/source/processes/hadronic/stopping/src/G4HadronStoppingProcess.cc +++ b/source/processes/hadronic/stopping/src/G4HadronStoppingProcess.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronStoppingProcess.cc 66367 2012-12-18 09:18:08Z gcosmo $ +// $Id: G4HadronStoppingProcess.cc 88553 2015-02-26 10:12:11Z gcosmo $ // //--------------------------------------------------------------------- // @@ -44,6 +44,7 @@ // 20120914 M. Kelsey -- Pass subType in base ctor, remove enable flags // 20121004 K. Genser -- use G4HadronicProcessType in the constructor // 20121016 K. Genser -- Reverting to use one argument c'tor +// 20140818 K. Genser -- Labeled tracks using G4PhysicsModelCatalog // //------------------------------------------------------------------------ @@ -61,15 +62,15 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4HadronStoppingProcess::G4HadronStoppingProcess(const G4String& name) - : G4HadronicProcess(name, fHadronAtRest) + : G4HadronicProcess(name, fHadronAtRest), + fElementSelector(new G4ElementSelector()), + fEmCascade(new G4EmCaptureCascade()), // Owned by InteractionRegistry + fBoundDecay(0) { // Modify G4VProcess flags to emulate G4VRest instead of G4VDiscrete enableAtRestDoIt = true; enablePostStepDoIt = false; - fElementSelector = new G4ElementSelector(); - fEmCascade = new G4EmCaptureCascade(); // Owned by InteractionRegistry - fBoundDecay = 0; G4HadronicProcessStore::Instance()->RegisterExtraProcess(this); } @@ -91,9 +92,10 @@ G4bool G4HadronStoppingProcess::IsApplicable(const G4ParticleDefinition& p) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4HadronStoppingProcess::PreparePhysicsTable(const G4ParticleDefinition& p) +void +G4HadronStoppingProcess::PreparePhysicsTable(const G4ParticleDefinition& p) { - G4HadronicProcessStore::Instance()->RegisterParticleForExtraProcess(this, &p); + G4HadronicProcessStore::Instance()->RegisterParticleForExtraProcess(this,&p); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -134,6 +136,7 @@ G4VParticleChange* G4HadronStoppingProcess::AtRestDoIt(const G4Track& track, G4HadFinalState* result = 0; thePro.Initialise(track); + thePro.SetGlobalTime(0.0); G4double time0 = track.GetGlobalTime(); G4bool nuclearCapture = true; @@ -145,6 +148,7 @@ G4VParticleChange* G4HadronStoppingProcess::AtRestDoIt(const G4Track& track, G4double ebound = result->GetLocalEnergyDeposit(); G4double edep = 0.0; G4int nSecondaries = result->GetNumberOfSecondaries(); + //G4int nEmCascadeSec = nSecondaries; // Try decay from bound level // For mu- the time of projectile should be changed. @@ -168,6 +172,10 @@ G4VParticleChange* G4HadronStoppingProcess::AtRestDoIt(const G4Track& track, if(nuclearCapture) { + // delay of capture + G4double capTime = thePro.GetGlobalTime(); + thePro.SetGlobalTime(0.0); + // select model G4HadronicInteraction* model = 0; try { @@ -224,7 +232,17 @@ G4VParticleChange* G4HadronStoppingProcess::AtRestDoIt(const G4Track& track, while(!resultNuc); edep = resultNuc->GetLocalEnergyDeposit(); - nSecondaries += resultNuc->GetNumberOfSecondaries(); + size_t nnuc = resultNuc->GetNumberOfSecondaries(); + + // add delay time of capture + if(0 < nnuc) { + for(size_t i=0; iGetSecondary(i); + sec->SetTime(capTime + sec->GetTime()); + } + } + + nSecondaries += nnuc; result->AddSecondaries(resultNuc); resultNuc->Clear(); } @@ -249,6 +267,7 @@ G4VParticleChange* G4HadronStoppingProcess::AtRestDoIt(const G4Track& track, time, track.GetPosition()); t->SetWeight(w*sec->GetWeight()); + t->SetTouchableHandle(track.GetTouchableHandle()); theTotalResult->AddSecondary(t); } diff --git a/source/processes/hadronic/stopping/src/G4MuonMinusBoundDecay.cc b/source/processes/hadronic/stopping/src/G4MuonMinusBoundDecay.cc index 2c5963749b9..dd51cb4082f 100644 --- a/source/processes/hadronic/stopping/src/G4MuonMinusBoundDecay.cc +++ b/source/processes/hadronic/stopping/src/G4MuonMinusBoundDecay.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuonMinusBoundDecay.cc 69573 2013-05-08 13:35:53Z gcosmo $ +// $Id: G4MuonMinusBoundDecay.cc 88553 2015-02-26 10:12:11Z gcosmo $ // //----------------------------------------------------------------------------- // @@ -87,8 +87,8 @@ G4MuonMinusBoundDecay::ApplyYourself(const G4HadProjectile& projectile, // === sample capture time and change time of projectile - G4double time = -std::log(G4UniformRand()) / lambda; G4HadProjectile* p = const_cast(&projectile); + G4double time = p->GetGlobalTime() - std::log(G4UniformRand())/lambda; p->SetGlobalTime(time); //G4cout << "lambda= " << lambda << " lambdac= " << lambdac diff --git a/source/processes/management/History b/source/processes/management/History index 6f02f44231c..ae1178064b5 100644 --- a/source/processes/management/History +++ b/source/processes/management/History @@ -1,4 +1,4 @@ -$Id: History 81889 2014-06-06 13:22:52Z gcosmo $ +$Id: History 88490 2015-02-24 10:59:10Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,9 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +- Jan. 20, 2015 H.Kurashige (procman-V09-06-10) +- Modify SetProcessOrderingToSecond() in G4ProcessManager + - May 12th, 2014 A.Dotti (procman-V09-06-09) - Fixing bug #1625: G4WrapperProcess not correctly forwards call to SetMasterProcess to wrapped process. diff --git a/source/processes/management/src/G4ProcessManager.cc b/source/processes/management/src/G4ProcessManager.cc index c03713630b5..11543f29893 100644 --- a/source/processes/management/src/G4ProcessManager.cc +++ b/source/processes/management/src/G4ProcessManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.cc 71231 2013-06-12 13:06:28Z gcosmo $ +// $Id: G4ProcessManager.cc 88489 2015-02-24 10:57:46Z gcosmo $ // // // -------------------------------------------------------------- @@ -798,9 +798,9 @@ void G4ProcessManager::SetProcessOrderingToSecond( } } - // set ordering parameter to 1 - pAttr->ordProcVector[ivec-1] = 1; - pAttr->ordProcVector[ivec] = 1; + // set ordering parameter to 0 + pAttr->ordProcVector[ivec-1] = 0; + pAttr->ordProcVector[ivec] = 0; // find insert position G4ProcessVector* pVector = theProcVector[ivec]; diff --git a/source/processes/transportation/History b/source/processes/transportation/History index bde551f6417..be1396c02ca 100644 --- a/source/processes/transportation/History +++ b/source/processes/transportation/History @@ -1,4 +1,4 @@ -$Id: History 81893 2014-06-06 13:30:07Z gcosmo $ +$Id: History 88491 2015-02-24 11:05:22Z gcosmo $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +January 10th 2015, M.Kelsey transport-V09-06-09 +--------------------------- +- G4Transportation.cc, G4CoupledTransportation: In + AlongStepGetPhysicalInteractionLength(), initialize restMass data member + using G4DynamicParticle (as is used in DoIt), not G4ParticleDefinition. + Resolves inconsistent kinematics when dynamic mass is measurably different + from "PDG" mass. + May 27st 2014, V.Ivanchenko transport-V09-06-08 ------------------------------ - G4UserSpecialCuts - fixed trivial Coverity report diff --git a/source/processes/transportation/src/G4CoupledTransportation.cc b/source/processes/transportation/src/G4CoupledTransportation.cc index d1d3aea54bf..57c19356f70 100644 --- a/source/processes/transportation/src/G4CoupledTransportation.cc +++ b/source/processes/transportation/src/G4CoupledTransportation.cc @@ -24,12 +24,13 @@ // ******************************************************************** // // -// $Id: G4CoupledTransportation.cc 81893 2014-06-06 13:30:07Z gcosmo $ +// $Id: G4CoupledTransportation.cc 88491 2015-02-24 11:05:22Z gcosmo $ // // ------------------------------------------------------------ // GEANT 4 class implementation // ======================================================================= // Modified: +// 12 Jan 2015, M.Kelsey: Use G4DynamicParticle mass, NOT PDGMass // 13 May 2006, J. Apostolakis: Revised for parallel navigation (PathFinder) // 19 Jan 2006, P.MoraDeFreitas: Fix for suspended tracks (StartTracking) // 11 Aug 2004, M.Asai: Add G4VSensitiveDetector* for updating stepPoint. @@ -208,7 +209,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // G4double particleCharge = pParticle->GetCharge() ; G4double magneticMoment = pParticle->GetMagneticMoment() ; - G4double restMass = pParticleDef->GetPDGMass() ; + G4double restMass = pParticle->GetMass() ; fMassGeometryLimitedStep = false ; // Set default - alex fAnyGeometryLimitedStep = false; diff --git a/source/processes/transportation/src/G4Transportation.cc b/source/processes/transportation/src/G4Transportation.cc index 8d35a0c37c6..152b36dd75f 100644 --- a/source/processes/transportation/src/G4Transportation.cc +++ b/source/processes/transportation/src/G4Transportation.cc @@ -40,6 +40,7 @@ // // ======================================================================= // Modified: +// 12 Jan 2015, M.Kelsey: Use G4DynamicParticle mass, NOT PDGMass // 28 Oct 2011, P.Gumpl./J.Ap: Detect gravity field, use magnetic moment // 20 Nov 2008, J.Apostolakis: Push safety to helper - after ComputeSafety // 9 Nov 2007, J.Apostolakis: Flag for short steps, push safety to helper @@ -201,7 +202,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // G4double particleCharge = pParticle->GetCharge() ; G4double magneticMoment = pParticle->GetMagneticMoment() ; - G4double restMass = pParticleDef->GetPDGMass() ; + G4double restMass = pParticle->GetMass() ; fGeometryLimitedStep = false ; // fEndGlobalTimeComputed = false ;